Cómo dibujar correctamente diagramas de bloques con múltiples entradas en TiKz

Cómo dibujar correctamente diagramas de bloques con múltiples entradas en TiKz

Me gustaría recrear el siguiente diagrama de bloques. Pero todavía no se sabe cómo colocar correctamente los bloques y las flechas. He probado varias cosas y esto es lo que tengo hasta ahora. Cualquier ayuda es muy apreciada.

diagrama de bloques f y g

\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}

ingrese la descripción de la imagen aquí

Respuesta1

Vea si la siguiente solución es aceptable para usted:

\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}

ingrese la descripción de la imagen aquí

Respuesta2

¿Como esto?

ingrese la descripción de la imagen aquí

\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}

Respuesta3

Otra alternativa

\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}

ingrese la descripción de la imagen aquí

Respuesta4

otro

\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}

ingrese la descripción de la imagen aquí

información relacionada