在Matlab中根据它们的值和索引替换矩阵条目

时间:2016-11-08 11:53:52

标签: matlab matrix

在MATLAB中,我想在矩阵中替换那些值等于行索引为1的条目,其他条目为0。

例如

A = [3 1 4
     2 2 5
     1 3 3];

我希望

B = [0 1 0
     1 1 0 
     0 1 1];

有没有办法有效地这样做?

2 个答案:

答案 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