簡體   English   中英

動畫離散莖圖

[英]Animated Discrete Stem Plot

因此,我想創建一個離散時間復指數函數的動畫圖。 最簡單的非動畫圖將由以下給出:

n=-5:40;
x=(exp((3*4j)*n)).*(n>=0);
y=real(x);
subplot(2,1,1);
stem (n,y)
z=imag(x);
subplot(2,1,2);
stem (n,z)

如何設置動畫以顯示給定間隔中考慮的不同樣本數量的函數(假設我有一個由開始秒和結束秒指定的時間間隔,以及一個包含給定間隔中樣本值數量的向量)?

我嘗試了以下方法:

figure,hold on
xlim([min(x(:)) max(x(:))])
ylim([min(y(:)) max(y(:))])

%// Plot point by point
for k = 1:numel(x)
    stem (k,y) %// Choose your own marker here
    pause(0.001);     
end

那不會編譯。 如何實現呢?

簡短答案:

進行以下兩項更改:

xlim([min(x(:)) max(x(:))]) xlim([1 numel(x)])替換xlim([min(x(:)) max(x(:))]) xlim([1 numel(x)])
stem (k,y)替換為: stem (k,y(k))


詳細答案:

xlim([min(x(:)) max(x(:))])是給你以下錯誤:

Error using matlab.graphics.axis.Axes/set
While setting the 'XLim' property of 'Axes':
This is not a valid LimitsWithInfs value. Complex inputs are not supported

該錯誤消息告訴您確切的問題是什么。 您的向量x包含復數。 具有復數的時間軸也沒有任何含義。
似乎您希望將此行xlim([min(x(:)) max(x(:))])替換為:
xlim([1 numel(x)])

在循環內部, stem (k,y)會給您以下錯誤:

Error using stem (line 46)
X must be same length as Y.

該錯誤消息告訴您確切的問題是什么。 這里k只是一個標量(1x1),而y是1x46向量。
由於您要逐點繪制y ,因此,將stem (k,y)替換為: stem (k,y(k))


進行上述修復后的輸出:

輸出量

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM