2个向量上的参数,而不使用for循环



我有两个向量

A=[10 22 31 14 55 16 47 18];
B= [1 2 1 1 1 2 1 2];

我想做一个第三个向量C,它包含对于B=1的值为a的值;像

C=[10 NaN 31 14 55 NaN 47 NaN]

C=[10 31 14 55 47]

我使用for循环来完成此操作。只想知道这是否可行,而不使用for循环,因为它可以节省大量计算时间。(我的矢量真的非常大

for i=1:length (A);
if B(i)==1;
C(i)=A(i)
else C(i)=NaN;
end;
end;

使用布尔逻辑进行索引。在你的情况下,正如你所建议的,你可以用一个简单的来完成

C = A(B==1);

对于更复杂的情况,也可以使用函数find((,如

C = A(find(B==1));

C = nan(size(A));
C(find(B==1)) = A(find(B==1));

相关内容

  • 没有找到相关文章

最新更新