MATLAB:'如果'数组的任何一行包含一个值

时间:2012-05-23 22:07:05

标签: arrays matlab

有没有办法缩短下面代码的第2行?

for i = 1:length(dataStructure)
    if dataStructure(1,i) == 100000000 || dataStructure(2,i) == 100000000 % this line
        dataStructure(:,i) = NaN;
    end
end

我认为以下就足够了(但这不起作用):

if dataStructure(:,i) == 100000000

换句话说,如何检查数组的给定列中是否存在数字?这里的问题是我无法预测dataStructure是否会有一行或两行,因此不能使用嵌套的for循环,因为每次dataStructure只有一行时都会导致错误。

2 个答案:

答案 0 :(得分:2)

if any(dataStructure(:,i) == 100000000)

答案 1 :(得分:2)

您不需要循环:

dataStructure(:,any(dataStructure==1e8,1) = NaN;

这称为逻辑索引,更多信息:herehere