【问题标题】:Animated Discrete Stem Plot动画离散茎图
【发布时间】:2016-11-10 17:59:00
【问题描述】:

所以我想创建一个离散时间复指数函数的动画图。最简单的非动画情节如下:

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

那不编译。如何做到这一点?

【问题讨论】:

    标签: matlab plot matlab-figure


    【解决方案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))


    进行上述修复后的输出:

    【讨论】:

      猜你喜欢
      • 2017-11-14
      • 1970-01-01
      • 2019-12-28
      • 2021-07-01
      • 2021-03-05
      • 2021-11-05
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      相关资源
      最近更新 更多