1
在MATLAB中,我想用矩阵替换它们的值等于它们的行索引的矩阵中的一个,其余的值为零。在Matlab中根据矩阵条目的值和索引替换矩阵条目
例如
A = [3 1 4
2 2 5
1 3 3];
,我想有
B = [0 1 0
1 1 0
0 1 1];
有没有什么办法,以如此高效呢?
在MATLAB中,我想用矩阵替换它们的值等于它们的行索引的矩阵中的一个,其余的值为零。在Matlab中根据矩阵条目的值和索引替换矩阵条目
例如
A = [3 1 4
2 2 5
1 3 3];
,我想有
B = [0 1 0
1 1 0
0 1 1];
有没有什么办法,以如此高效呢?
位更通用:R2016b之前
MATLAB:
B = bsxfun(@eq, A, (1:size(A,1)).');
MATLAB R2016b及更高版本:
B = (A == (1:size(A,1)).');
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
替代按的Stewie建议:
bsxfun (@eq, A, [1,1,1;2,2,2;3,3,3])
@StewieGriffin:这是我的错误,我没有正确阅读他的问题。但是,我在回答中根据您的建议添加了一些代码。谢谢 – User1551892