我想知道你是否在MATLAB中看到了一种快速转换以下内容的方法" for"循环进入更有效的单线计算。
A=[2;4;0;6;1;0];
B=[1;3;0;4;0;5];
C=[2,4,8,5,7;
11,44,2,8,9;
43,2,1,87,3;
13,26,7,9,3;
12,2,6,3,23;
18,42,6,7,2];
for i=1:size(A,1)
D(i,1)=i-1;
if (A(i,1)~=0)
if (B(i,1)==0)
D(i,2)=0;
else
D(i,2)=C(A(i,1),B(i,1));
end
else
D(i,2)=0;
end
end
答案 0 :(得分:2)
好吧,你可以使用sub2ind
:
D=zeros(numel(A),2);
D(:,1)=0:(numel(A)-1);
LinearIds=sub2ind(size(C),A(A~=0&B~=0),B(A~=0&B~=0));
D(A~=0&B~=0,2)=C(LinearIds);
D =
0 11
1 7
2 0
3 7
4 0
5 0