Можно ли в тикз - простым способом нарисовать сигнал...
Мне интересно нарисовать что-то подобное
Форма сигнала не имеет значения... Мне просто нужно уметь рисовать стрелки и текст между ними.
Относительно метапоста:
Моей целью в этом посте никогда не было, чтобы кто-то дал мне полное решение. Меня интересовали только возможные способы создания случайного сигнала, который давало решение синуса... Теперь я вижу, что заголовок/вопрос мог ввести в заблуждение. Извините за проблемы, которые это могло вам доставить.
решение1
Чистое решение TikZ:
\documentclass[tikz,
border=3mm,
]{standalone}
\usetikzlibrary{arrows.meta,
quotes
}
\begin{document}
\begin{tikzpicture}[x=16mm,
every edge/.style = {draw, Straight Barb-Straight Barb},
every edge quotes/.style = {fill=white,font=\footnotesize}
]
\draw[very thick,red, smooth,domain=9:101] plot (\x/10,rand);
\foreach \x in {1, 3, 4, 5, 7, 6, 8, 9, 10}
\draw[dashed] (\x,-1.1) -- ++ (0,2.2);
\draw (3.0,-1.3) edge ["Frame step"] ++ (2,0)
(5.0,-1.3) edge ["Overlap"] ++ (1,0)
(1.0,-1.6) edge ["Frame 1"] ++ (3,0)
(5.0,-1.6) edge ["Frame 3"] ++ (3,0)
(3.0,-1.9) edge ["Frame 2"] ++ (3,0)
(7.0,-1.9) edge ["Frame 4"] ++ (3,0);
\end{tikzpicture}
\end{document}
решение2
Мне скучно, поэтому вот вам предложение с некоторой помощью от pgfplots
.
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}
\begin{document}
\begin{tikzpicture}[
doublearrow/.style={
<->,
>=latex,
every node/.style={fill=white,font=\scriptsize}}]
\begin{axis}[
axis lines=none,
clip=false,
width=12cm,
height=3cm
]
\pgfmathsetseed{1} % to get same output every time
\addplot[black,smooth,domain=0:10] {rnd};
\pgfplotsinvokeforeach{1,3,3.5,5,7,7.5,9}{% draw vertical dotted line at these x-positions
\draw [densely dotted] (#1,0) -- (#1,1.5);
}
% draw arrows with text
\draw [doublearrow] (1,-0.2) -- node{Frame 1} (3.5,-0.2);
\draw [doublearrow] (3,-0.4) -- node{Frame 2} (5,-0.4);
\end{axis}
\end{tikzpicture}
\end{document}
И поскольку я работал над этим, пока публиковались другие ответы, только с TikZ. Я сделал несколько макросов, которые содержат ширину кадра, шаг и т. д., так что вы можете легко изменить их при необходимости. Измените один макрос, и все стрелки также переместятся. (Я предполагаю, что ширина кадра и шаг здесь постоянны.)
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[
doublearrow/.style={
<->,
>=latex,
every node/.style={fill=white,font=\scriptsize}}]
\pgfmathsetseed{42}
\draw plot[smooth,domain=0:12,samples=25] (\x,rnd);
\pgfmathsetmacro\FrameStart{1}
\pgfmathsetmacro\FrameW{3}
\pgfmathsetmacro\FrameOverlap{0.5}
\pgfmathsetmacro\FrameStep{\FrameW-\FrameOverlap}
\foreach[
evaluate=\i as \y using {ifthenelse(mod(\i,2)==0,-0.4,-0.8)},
evaluate=\i as \X using \i*\FrameStep+\FrameStart,
count=\j
] \i in {0,...,3} {
\draw [densely dotted] (\X,0) -- (\X,1.5);
\draw [densely dotted] (\X+\FrameW,0) -- (\X+\FrameW,1.5);
\draw [doublearrow] (\X,\y) -- node{Frame \j} (\X+\FrameW,\y);
}
\draw [doublearrow] (\FrameStart+\FrameStep,1.3) -- node{Frame step} +(\FrameStep,0);
\draw [doublearrow] (\FrameStart+3*\FrameStep,1) -- node[above=2pt,font=\tiny]{Overlap} +(\FrameOverlap,0);
\end{tikzpicture}
\end{document}
решение3
Я принял это решение на основе предложения @Dr.ManuelKuehner:
\begin{figure}[H]
\centering
\begin{tikzpicture}
% Frame length: 3
% Overlap length:0.6
% Frame start sections: 0 - 1.4 - 2.8 - 4.2
% Frame end sections: 2 - 3.4 - 4.8 - 4.2
\draw[->] (-1,0) -- ++ (12,0) node[right] {Time}; %X-axis line
\draw[thick, blue] plot[domain=0:11.7*pi, samples=60] (\x/pi,{sin(0.9*\x r) + sin(0.42*\x r)}); %sine wave
\draw[densely dashed] (0,-1.5) -- + (0,3.0) (3,-1.5) -- + (0,3.6);% frame 1
\draw[<->] (0,-1.3) -- node[below] {Frame 1} + (3,0);
\draw[densely dashed] (2.4,-1.1) -- + (0,3.3) (5.4,-1.1) -- + (0,4.1);
\draw[<->] (2.4,2.1) -- node[above] {Overlap} + (0.6,0);
\draw[<->] (2.4,-2.1) -- node[below] {Frame 2} + (3,0);
\draw[densely dashed] (4.8,-1.5) -- + (0,4.4) (7.8,-1.5) -- + (0,3.6);
\draw[<->] (4.8,2.9) -- node[above] {Overlap} + (0.6,0);
\draw[<->] (4.8,-1.3) -- node[below] {Frame 3} + (3,0);
\draw[densely dashed] (7.2,-1.1) -- + (0,3.3) (10.2,-1.1) -- + (0,3.3);
\draw[<->] (7.2,2.1) -- node[above] {Overlap} + (0.6,0);
\draw[<->] (7.2,-2.1) -- node[below] {Frame 4} + (3,0);
\end{tikzpicture}
\end{figure}