所以我想创建一个离散时间复指数函数的动画图。最简单的非动画情节将由此给出:
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
那不会编译。怎么做到这一点?
答案 0 :(得分: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))
。
进行上述修正后的输出: