我有两个向量
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));