MATLab中的不等价循环结构

时间:2015-08-31 00:23:41

标签: matlab for-loop

我有两个版本的代码 - 当第一个没有做我想要的时候,我编写了第二个(更明确的)循环。

我哪里出错了?我怀疑是一个切片问题(例如,我没有正确地将数据切片出来)

第一个版本没有做我想做的事情,在循环上方被注释掉了:

rBool = false(h.numDirs, h.numTimes, h.numR);
for d = 1:h.numDirs
    U_first = h.data(d,1,:);
    U_first = U_first{1};
    for t = 2:h.numTimes
        U = h.data(d,t,:);
        U = U{1};
        dU = abs(U-U_first);
        %rBool(d,t,:) = (dU > (smallVal*U_first) | rBool(d,t-1));
        for r=1:h.numR
            rBool(d,t,r) = (dU(r) > (smallVal*U_first(r))| rBool(d,t-1,r));
        end
    end
end    

1 个答案:

答案 0 :(得分:1)

您在评论行中缺少第二个rBool的第三个索引:

rBool(d,t,:) = (dU > (smallVal*U_first) | rBool(d,t-1,:));

虽然我像这样括号:

rBool(d,t,:) = (dU > (smallVal*U_first)) | rBool(d,t-1,:);

我认为您最初隐含地假设r==1的版本。

您可以通过设置

来简化代码
U = h.data{d,t,1};

而不是剪切单元格向量并选择第一个元素。