在矩阵中排除一些值然后计算方差

时间:2018-01-16 18:05:21

标签: matlab

我有一个矩阵X,其尺寸为1000 * 16001。我想要排除此矩阵中大于或等于1或小于或小于-1的任何值。然后计算第二维的方差。我的代码是

[L,K]=size(X); 
        for n=1:K    
            for m=1:L
                if (X(m,n)>=1 || X(m,n)<=-1)
                    X(m,n)=NaN;
                end
                 varx=var(X(:,n),1,1,'omitnan');
            end

        end

然后绘制方差。

plot(T,varx','k','linewidth',2)

其中T是尺寸为16001 * 1的时间。但是我收到了这个错误

Too many input arguments
varx=var(X(:,n),1,1,'omitnan');

如何修复此错误并绘制时间T的差异。非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

以下内容应删除大于1或小于-1的所有值:

Xnew = X;
Xnew(X > 1 | X < -1) = NaN;

接下来,可以使用以下方法计算每行的方差:

varx = var(Xnew,[],2,'omitnan’)

那么情节对你来说应该不是问题:

plot(T,varx,'k','linewidth',2)