2016-11-10 61 views
0

所以我想創建一個離散時間復指數函數的動畫情節。最簡單的非動畫劇情將通過此給出:動畫離散幹情節

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 

無法編譯。如何實現這一目標?

回答

1

簡短的回答:

進行以下兩個變化:

更換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))。使提到修復後


輸出:

Output