Hallo,

Ich versuche gerade mit Tikz eine Zustandsregelung zu zeichnen. Das Beispiel auf Texample geht schonmal in die Richtung. Es gibt jedoch ein Problem.

Hier meine Frage:

Wie kann man unter den Block rechts oben, anstatt nur einen Block (ei = (yi - y~i)) darunter zu setzen, zwei Blöcke darunter setzen. Prinzipskizze:

alt text

Vielen Dank schonmal

gefragt 16 Jul '15, 06:36

ogbob334's gravatar image

ogbob334
333
Akzeptiert: 100%

bearbeitet 16 Jul '15, 06:51

esdd's gravatar image

esdd
14.2k53251


Die Syntax des verlinkten Beispiels ist nicht mehr ganz aktuell: verwende \tikzset zum Definieren von Stilen.

Wenn die matrix Bibliothek geladen ist, kann man matrix of nodes nutzen und sich die ganzen \node und ; sparen. Bei Bedarf kann man diesen Befehl aber trotzdem nutzen, zum Beispiel um in eine Zelle zwei Noden einzufügen:

Open in Online-Editor
\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix}

\tikzset{
  block/.style = {draw,rectangle,thick,minimum size=2em},
  branch/.style = {circle,inner sep=0pt,minimum size=1mm,draw=black},
  line/.style = {thick},
}
\begin{document}
\begin{tikzpicture}
  \matrix [
    ampersand replacement=\&,
    row sep=0.2cm, 
    column sep=0.4cm,
    matrix of nodes,
    nodes={anchor=center}
    ] {
    %
    |[block,minimum width=5cm](A)|Block A \\
    \&|[branch](u)|  \\
    \node[block,anchor=east,xshift=-1em] (B){Block B}; 
    \node[block,anchor=west,xshift=1em] (C){Block C};\\
  };
  \draw[line] (A.west)+(-1,0)coordinate(h)--(A)-|(u)|-(C)--(B)--(B-|h);
\end{tikzpicture}
\end{document}

Ergebnis:

alt text

In dem von Dir verlinkten Beispiel bietet sich die Option matrix of math nodes an. Dann kann man noch die ganzen $ am Anfang und Ende des Nodetextes weglassen.

Open in Online-Editor
% ursprüngliche Quelle: http://www.texample.net/tikz/examples/observer-estimator/
% Author: Dominik Haumann
% Änderungen: esdd
\documentclass[landscape,a5paper,11pt]{article}
\usepackage[utf8]{inputenc} % utf8 encoding
\usepackage[T1]{fontenc} % use T1 fonts
\usepackage{amsmath} % nice math symbols
\usepackage{bm} % bold math

\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing} % for snake lines
\usetikzlibrary{matrix} % for block alignment
\usetikzlibrary{arrows} % for arrow heads
\usetikzlibrary{calc} % for manimulation of coordinates

% TikZ styles for drawing
\tikzset{
  block/.style = {draw,rectangle,thick,minimum size=2em},
  sum/.style = {draw,circle,inner sep=0mm,minimum size=2mm},
  line/.style = {thick},
  connector/.style = {->,line},
  branch/.style = {circle,inner sep=0pt,minimum size=1mm,fill=black,draw=black},
  guide/.style = {},
  snakeline/.style = {
    connector, decorate, decoration={pre length=0.2cm, post length=0.2cm,
    snake, amplitude=.4mm, segment length=2mm},thick, magenta, ->}
}

\renewcommand{\vec}[1]{\ensuremath{\boldsymbol{#1}}} % bold vectors
\def \myneq {\skew{-2}\not =} % \neq alone skews the dash

\begin{document}

  \begin{tikzpicture}[auto, >=stealth']
    \small
    % node placement with matrix library: 5x4 array
    \matrix[
      ampersand replacement=\&,
      row sep=0.2cm, 
      column sep=0.4cm,
      matrix of math nodes,
      nodes={anchor=center}
      ] {
      %
      |[block] (F1)| \vec{u}_i = F_i(\{\widetilde{\vec{x}}_j\}_{j=1}^N) \&
      |[branch] (u1)|  \&
      \&[1em]% <- etwas mehr Abstand, damit Platz für die Beschriftung ist
      |[block] (f1)| \begin{matrix}
            \dot{\vec{x}}_i =
              f_i(\vec{x}_i,
                  \textcolor{red}{\{\widetilde{\vec{x}}_j\}_{j \myneq i}},
                  \vec{u}_i,
                  t)\\
            \vec{y}_i =
              g_i(\vec{x}_i,
                  \textcolor{blue}{\{\widetilde{\vec{x}}_j\}_{j \myneq i}},
                  t)
          \end{matrix} \& \\
      \&
      \&
      \&
      \node[block,anchor=east,xshift=-1em] (L1a){\text{Block B}}; 
      \node[block,anchor=west,xshift=1em] (L1b){\text{Block C}};
      \&
      |[sum] (e1)|  \\
      \&
      \&
      |[sum] (v1)| \&
      |[block] (o1)| \begin{matrix}
            \dot{\widetilde{\vec{x}}}_i =
              \widetilde{f}_i(\widetilde{\vec{x}}_i,
                              \textcolor{red}{\{\widetilde{\vec{x}}_j\}_{j \myneq i}},
                              \vec{v}_i, t)\\
              \widetilde{\vec{y}}_i =
                g_i(\widetilde{\vec{x}}_i,
                    \textcolor{blue}{\{\widetilde{\vec{x}}_j\}_{j \myneq i}},
                    t)
          \end{matrix}
      \&
      \\
      |[guide] (i1)| \& \& \& \& \\
    };
    % now link the nodes
    \draw [line] (F1) -- (u1);
    \draw [connector] (u1) -- node {$u_i$} (f1);
    \draw [connector] (f1) -| node[near end] {$\vec{y}_i$} (e1);
    \draw [connector] (e1) -- (L1b);
    \draw [connector] (L1b) -- (L1a);
    \draw [connector] (L1a) -| (v1);
    \draw [connector] (v1) -- node {$\vec{v}_i$} (o1);
    \draw [connector] (u1) |- (v1);
    \draw [connector] (o1) -| node[pos=0.96] {$-$} node [near end, swap]
                      {$\widetilde{\vec{y}}_i$} (e1);
    \draw [connector] (o1.south) -- ++(0,-.5cm) -| node [near start]
                      {$\widetilde{\vec{x}}_i$} ($(F1.south) + (0.4cm, 0em)$);
    % draw the snake lines with offset (using the calc library)
    \draw [snakeline] ($(i1) - (0.4cm, -1cm)$) -- node
      {$\{\widetilde{\vec{x}}_j\}_{j \myneq i}$} ($(F1.south) - (0.4cm, 0em)$);
    \draw [snakeline, swap] ($(v1.east) - (1.0cm, 0.4cm)$) -- node
      {$\{\widetilde{\vec{x}}_j\}_{j \myneq i}$} ($(o1.west) - (0cm, 0.4cm)$);
    \draw [snakeline, swap] ($(u1.east) + (0.1cm, -0.4cm)$) -- node
      {$\{\widetilde{\vec{x}}_j\}_{j \myneq i}$} ($(f1.west) - (0cm, 0.4cm)$);
  \end{tikzpicture}
\end{document}

Ergebnis:

alt text

Permanenter link

beantwortet 16 Jul '15, 08:21

esdd's gravatar image

esdd
14.2k53251

Vielen Dank! Das ist genau das, was ich gebraucht habe!

(16 Jul '15, 10:08) ogbob334
1

@ogbob334: Danke geht bei uns primär mit einem Klick auf den Daumen hoch. Und wenn es genau das ist, was Du gebraucht hast, dann wäre auch ein Klick auf den Haken angebracht.

(16 Jul '15, 10:20) saputello
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×492
×51

Frage gestellt: 16 Jul '15, 06:36

Frage wurde angeschaut: 2,120 Mal

Zuletzt aktualisiert: 16 Jul '15, 10:21