如果循环,则向量化MATLAB

时间:2017-04-22 14:24:41

标签: matlab loops vectorization

有很多相关的问题,但我找不到一个完全相关的问题。如果满足if条件,我需要做一些计算。 这是没有矢量化的代码:

if check(w,t)~=1
 do all this
end

在此w之外的tif上有一个循环,我需要对w进行矢量化。所以,我想要像

这样的东西
if check(:,t)~=1
do all this (only for those w for which the condition was satisfied)
end

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您问题的最佳答案在很大程度上取决于满足条件check(w,t)~=1if check(:,t)~=1时您想要做什么。

尽管如此,您可以使用函数find查找矩阵check上元素的索引,在您的情况下为~= 1

[r_no_1,c_no_1]=find(ckeck ~= 1)

如果您需要按列工作,可以这样使用find

for col=1:size(ckeck,2)
   ck_no_1=find(ckeck(:,col) ~= 1)
   m=ckeck(ck_no_1,col)*100
end

现在,在每次迭代中,ch_no_1包含其元素与1不同的行索引(第col列)。

希望这有帮助,

Qapla'