在MATLAB中,我想在矩阵中替换那些值等于行索引为1的条目,其他条目为0。
例如
A = [3 1 4
2 2 5
1 3 3];
我希望
B = [0 1 0
1 1 0
0 1 1];
有没有办法有效地这样做?
答案 0 :(得分:2)
更通用:
R2016b之前的MATLAB:
B = bsxfun(@eq, A, (1:size(A,1)).');
MATLAB R2016b及更高版本:
B = ( A == (1:size(A,1)).' );
答案 1 :(得分:1)
for
根据stewie建议的替代方案:
k = size (A) ;
for i = 1 : k(1)
for j = 1 : k(2)
if (A(i,j) == i )
A(i,j) = 1;
else
A(i,j) = 0 ;
end
end
end