我有两个版本的代码 - 当第一个没有做我想要的时候,我编写了第二个(更明确的)循环。
我哪里出错了?我怀疑是一个切片问题(例如,我没有正确地将数据切片出来)
第一个版本没有做我想做的事情,在循环上方被注释掉了:
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
答案 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};
而不是剪切单元格向量并选择第一个元素。