animated sine wave continously

34 ビュー (過去 30 日間)
nirwana
nirwana 2023 年 3 月 30 日
コメント済み: Les Beckham 2023 年 3 月 31 日
Hi alll, i'd like to make sine wave with three variation and walk continously, but i end up make it uncontinously,
here the script that i modified, any suggestion to solve it?
TIA
close all
subplot(1,2,1)
t = 0:0.01:10*pi;
phase=pi;
y = cos(t+phase);
yH=hilbert(y);
for j = 1:length(t)
hold on
plot(t,y)
plot(t,0.5*imag(yH))
plot(t,y+imag(yH))
hold off
axis([0 8*pi -2 2]) % moving 2 cycles would mean the end would be 4pi + 2*2pi = 8pi
% you can keep the axis endpoints according to your need
grid on
pause(0.1)
%hold on
if j ~= length(t)
clf
end
t = t + 0.1; % used 0.1 increment as elements in t have 0.1 difference
% Also, as y is already defined earlier, this change in t will not change y
end;
  1 件のコメント
Adam Danz
Adam Danz 2023 年 3 月 30 日
@nirwana, creating an animation by iteratively calling plot() is very inefficient. In your demo, three lines are created and and eliminated over 3000 times. Instead, re-use the same line(s) and update the values on each iteration. @Les Beckham demonstrates this in the answer below.
Another approach is to use animatedline.

サインインしてコメントする。

採用された回答

Les Beckham
Les Beckham 2023 年 3 月 30 日
編集済み: Les Beckham 2023 年 3 月 30 日
This should get you started. Adjust as desired.
Note that the animation won't show here, but I tested it my local copy of Matlab.
t = linspace(0, 4*pi, 1000);
y = sin(t);
hl = plot(t, y);
grid on
xlim tight
ylim padded
for i=1:1000
set(hl, 'YData', circshift(get(hl, 'YData'), 1))
% you may want -1 here ^
% depending on which direction you want to scroll
drawnow
end
  2 件のコメント
nirwana
nirwana 2023 年 3 月 31 日
thanks @Les Beckham, it helps alot !!
Les Beckham
Les Beckham 2023 年 3 月 31 日
You are quite welcome.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeAnimation についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by