替换单元格数组中的值

时间:2014-10-30 16:02:06

标签: matlab

我有一个64行的单元格数组:

[1x8 double] [1x8 double] [-41.681792665672198] [1.002916975562337e+03] [1.002557764151239e+03] [ 2.076740522329561] [ 6.976575556945958]

有时在[1x8 double]单元格中,我会得到一个我想要过滤掉的值。我使用这个过滤器:

           if RESULT{j,1}(1,n) > 1050
               RESULT{j,1}(1,n) = 'NaN'; 
           end
           if RESULT{j,1}(1,n) < 950
               RESULT{j,1}(1,n) = 'NaN';
           end

不幸的是,MATLAB会给我这个错误:

**Assignment has more non-singleton rhs dimensions than non-singleton subscripts**

很奇怪,程序在处理过程中不会给我这个错误,但是在命令窗口中明确地调用了该函数之后。

我想使用这个替换然后计算平均值和标准差而没有那些奇数值:

if RESULT{j,1} ~=0
RESULT{j,4} = nanmean(RESULT{j,1});
RESULT{j,5} = nanmean(RESULT{j,2});
RESULT{j,6} = nanstd(RESULT{j,1});
RESULT{j,7} = nanstd(RESULT{j,2});
end

所以,如果你可能有更深层次的解决方案,那我就是你的全部:)

1 个答案:

答案 0 :(得分:0)

我无法再现完全相同的错误,但我认为问题在于如何分配NaN值,不应将其指定为字符串,而是调用NaN函数: 即NaN而不是NaN&#39; 在您的代码中:

if RESULT{j,1}(1,n) > 1050
   RESULT{j,1}(1,n) = NaN; 
end
if RESULT{j,1}(1,n) < 950
   RESULT{j,1}(1,n) = NaN;
end