使用循环

时间:2017-02-02 11:40:30

标签: matlab

我想要通过用两个相邻数据点的平均值替换超过每列标准偏差4倍的阈值的每个数据点来过滤加速(10240x31)数据。

首先,如果超过最大值,我想用零替换每个数据点。这是我的循环:

for w = 1:31
    Sigma(w) = std(zacceleration(:,w));
    zacceleration(zacceleration<(-4*Sigma(w))) = 0;
    zacceleration(zacceleration>(4*Sigma(w))) = 0;
end

如果w只是一个数字,则该代码有效,例如:

w = 1;

但是当w改变每次迭代时,过滤后的数据只包含不超过最后一个数据集Sigma(31)的阈值的值。 所以,我想我会覆盖我的数据或类似的东西,但我似乎无法找到解决方案。

任何人都可以给我一个提示吗?

提前感谢您和最好的问候。

1 个答案:

答案 0 :(得分:0)

我想我现在明白了。

Sigma = std(zacceleration);
for  a = 1:10240;
    for b = 1:31;
        if zacceleration(a,b)<(-4*Sigma(b))
            zacceleration(a,b) = 0;
        end
        if zacceleration(a,b)>(4*Sigma(b))
            zacceleration(a,b) = 0;
        end
    end
end