この for ループを行うより良い方法はありますか?
for i = find(A > 42)
B(A(i), i) = B(A(i), i) + 1;
end
A
整数配列です。B
はmax(A)
×length(A)
行列です。
例:
A = reshape(magic(3), 1, 9); %# 8 3 4 1 5 9 6 7 2
B = zeros(max(A), length(A));
for i = find(A > 3)
B(A(i), i) = B(A(i), i) + 1;
end
B = [
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 1 0
1 0 0 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0
]