所以我想要创建一个离散时间复指数函数的动画情节。最简单的非动画情节如下:
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那可不编译。如何做到这一点?
发布于 2016-11-11 11:37:43
简短回答:
进行以下两项更改:
1将xlim([min(x(:)) max(x(:))])替换为此xlim([1 numel(x)])。
2将stem (k,y)替换为:stem (k,y(k))。
详细答案:
1 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)])。
循环中的2,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))。
完成上述修复后的输出:

https://stackoverflow.com/questions/40534148
复制相似问题