So zeichnen Sie Blockdiagramme mit mehreren Eingängen in TiKz richtig

So zeichnen Sie Blockdiagramme mit mehreren Eingängen in TiKz richtig

Ich möchte das folgende Blockdiagramm neu erstellen. Aber ich weiß immer noch nicht, wie ich die Blöcke und Pfeile richtig positionieren soll. Ich habe mehrere Dinge ausprobiert und das ist mein bisheriges Ergebnis. Ich bin für jede Hilfe sehr dankbar.

f und g Blockdiagramm

\documentclass{beamer}
\usetheme{Boadilla}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{bm}
\usepackage{tikz}
\usetikzlibrary{shapes, arrows, positioning, calc}

\begin{document}

\tikzstyle{input} = [coordinate]
\tikzstyle{output} = [coordinate]

\begin{frame}{}

\begin{center}
\begin{tikzpicture}
    \node (input) at (0,0) {$\mathbf{x}$};
    \node [draw, fill=blue!20, rectangle, 
    minimum height=3.0em, minimum width=4.5em, right = 1cm of input, name=f]{$\mathbf{f}$};
    \node [draw, fill=blue!20, rectangle, 
    minimum height=3.0em, minimum width=4.5em, above right = -5mm and 4.5cm of input, name=g]{$\mathbf{g}$};
    \node [output, right = 1cm of g, name=z]{};
    \node [right = 0.1cm of z]{$\mathbf{z}$};
    \node (input) [above left = 0.3cm and 0.6cm of g, name=w]{$\mathbf{w}$};

    % Draw the connecting arrows and labels
    \draw [->, very thick] (input) -- (f);
    \draw [->, very thick] (f) -- (g) node [midway, above] {$\mathbf{y}$};
    \draw [->, very thick] (g) -- (z);
    \draw [->, very thick] (w) -- (g);
\end{tikzpicture}
\end{center}

\end{frame}

\end{document}

Bildbeschreibung hier eingeben

Antwort1

Prüfen Sie, ob die folgende Lösung für Sie akzeptabel ist:

\documentclass[border=3mm,tikz]{standalone}
\usepackage{bm}
\usetikzlibrary{shapes, arrows, positioning, calc}
\tikzstyle{input} = [coordinate]
\tikzstyle{output} = [coordinate]
\begin{document}
\begin{tikzpicture}
    \node (input) at (0,0) {$\mathbf{x}$};
    \node [draw, fill=blue!20, rectangle, 
    minimum height=3.0em, minimum width=4.5em, right = 1cm of input, name=f]{$\mathbf{f}$};
    \node [draw, fill=blue!20, rectangle, 
    minimum height=3.0em, minimum width=4.5em, right = 4.5cm of input, name=g]{$\mathbf{g}$};
    \node [output, right = 1cm of g, name=z]{};
    \node [right = 0.1cm of z]{$\mathbf{z}$};

    % Draw the connecting arrows and labels
    \draw [->, very thick] (input) -- (f);
    \draw [->, very thick] (f) -- (g) node [midway, below] {$\mathbf{y}$};
    \draw [->, very thick] (g) -- (z);
    \begin{scope}[transform canvas={yshift=+3mm}]
        \draw [->, very thick] ($(f)!0.4!(g)$) -- (g) node [midway, above] {$\mathbf{w}$};
    \end{scope}
\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

Antwort2

So was?

Bildbeschreibung hier eingeben

\documentclass{beamer}
\usetheme{Boadilla}
%\usepackage[utf8]{inputenc}
%\usepackage{amsmath}
\usepackage{bm}
\usepackage{tikz}
\usetikzlibrary{arrows.meta, 
                calc, 
                positioning,
                quotes}

\begin{document}
\begin{frame}
\frametitle{Block diagram}
\begin{center}
    \begin{tikzpicture}[
node distance = 4mm and 16mm,
   arr/.style = {very thick, -Latex},
   box/.style = {draw, semithick, fill=blue!20, 
                 minimum height=3.0em, minimum width=4.5em},
                        ]
\coordinate (in);
\node (f) [box, right=of in]                    {$\bf{f}$};
\node (g) [box, above right=of f.south east]    {$\bf{g}$};
\coordinate[right = of g]    (out);
%
\draw[arr]   (in) to ["$\bm{x}$"]   (f);
\draw[arr]   (f)  to ["$\bm{y}$" '] (f -| g.west);
\draw[arr]   (g)  to ["$\bm{z}$"]   (out);
%  
\coordinate[left=12mm of g.west]     (w);
\draw[arr]   (w)  to ["$\bm{w}$"]   (g);
\end{tikzpicture}
\end{center}
\end{frame}
\end{document}

Antwort3

Eine andere Alternative

\documentclass[border=3mm,tikz]{standalone}
\usepackage{bm}
\usetikzlibrary{arrows, positioning, calc}
\begin{document}
\begin{tikzpicture}[
    box/.style={draw, fill=blue!20, minimum height=3em, minimum width=4.5em},
    link/.style={->,very thick}]
    \node [box] (f) {$\mathbf{f}$};
    \node [box, right=2cm of f] (g) {$\mathbf{g}$};
     \draw[link, <-] (f.west)--++(180:1cm) node[left]{$\mathbf{x}$};
     \draw[link] (f)--($(f)!.5!(g)$) coordinate (aux1)|- node[below, pos=.75]{$\mathbf{y}$}($(g.south west)!.3333!(g.north west)$);
     \coordinate (aux2) at ($(g.north west)!.3333!(g.south west)$);
     \draw[link] (aux1|-aux2) --  node[above]{$\mathbf{w}$} (aux2);
     \draw[link] (g.east)--++(0:1cm) node[right]{$\mathbf{z}$};
     \end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

Antwort4

noch einer

\documentclass{beamer}
\usetheme{Boadilla}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{bm}
\usepackage{tikz}
\usetikzlibrary{shapes, arrows, positioning, calc}

\begin{document}

\tikzstyle{input} = [coordinate]
\tikzstyle{output} = [coordinate]

\begin{frame}{}

\begin{center}
\begin{tikzpicture}
    \node (input) at (0,0) {$\mathbf{x}$};
    \node [draw, fill=blue!20, rectangle, 
    minimum height=3.0em, minimum width=4.5em, right = 1cm of input, name=f]{$\mathbf{f}$};
    \node [draw, fill=blue!20, rectangle, 
    minimum height=3.0em, minimum width=4.5em, above right = -5mm and 4.5cm of input, name=g]{$\mathbf{g}$};
    \node [output, right = 1cm of g, name=z]{};
    \node [right = 0.1cm of z]{$\mathbf{z}$};
    \node (input) [above left = 0.3cm and 0.6cm of g, name=w]{$\mathbf{w}$};

    % Draw the connecting arrows and labels
    \draw [->, very thick] (input) -- (f);
    \draw [->, very thick] (f) -|($(f)!0.5!(g.190)$) |- (g.190) node [pos=0.2, below] {$\mathbf{y}$}; %modif1
    \draw [->, very thick] (g) -- (z);
    \draw [->, very thick] (w) |- (g.160);  %modif2
\end{tikzpicture}
\end{center}

\end{frame}

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen