【问题标题】:Matlab Plot Smoothing having no effectMatlab绘图平滑没有效果
【发布时间】:2014-02-27 23:29:00
【问题描述】:

我目前在使用“平滑”命令时遇到了一些问题,即它似乎对生成的绘图没有影响。我已经使用下面的脚本生成了一个情节

for h=1:4
    linespec = {'rx', 'gx', 'bx', 'yx'};
    hold on
    for b=1:365
        y=mean(mean(A(b,6*(h-1)+1:6*h)));
        p(h)=plot(b,y,linespec{h});
    end
    hold off
end

在数据集A 中逐行取前六列中的值的平均值,然后是第 7 到 12 列、第 13 到 18 列和第 19 到 14 列中的值;共生成四个图。

下一步是通过对 9 范围内的值进行平均来平滑结果图。因此,我将脚本调整为以下内容;

for h=1:4
    linespec = {'rx', 'gx', 'bx', 'yx'};
    hold on
    for b=1:365
        y=mean(mean(A(b,6*(h-1)+1:6*h)));
        w = smooth(y,9,'moving');
        p(h)=plot(b,w,linespec{h});
    end
    hold off
end

基本上只是在 plot 命令中添加 w 变量并用 w 替换 y。然而,这对我的情节没有任何影响。 Matlab 也不会抛出任何错误,因此输入大小似乎没有问题。有人知道问题可能是什么吗?

【问题讨论】:

    标签: matlab plot smoothing


    【解决方案1】:

    在任一版本的循环中,您似乎都在绘制 y 的单个值与 b 的单个值。那么,我认为y 是一个单一的值。您无法平滑点,因此smooth 操作无效。

    从一开始就不需要循环计算各种手段; mean 可以采用二维矩阵并返回一个向量。一口气计算y,然后平滑该向量(我认为应该有长度 365 - 取决于输入 A 的大小)。例如:

    b = 1:365;
    y=mean(A(:,6*(h-1)+1:6*h),2);
    w = smooth(y,9,'moving');
    plot(b,y,'rx');
    hold on
    plot(b,w,'gx');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 2012-12-05
      • 1970-01-01
      • 1970-01-01
      • 2011-09-09
      相关资源
      最近更新 更多