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