替换矩阵的对角线

时间:2013-03-28 08:56:01

标签: matlab matrix diagonal

我很有兴趣将矩阵D的对角线替换为1,2,3,4。 这是矩阵D

A=[1,2,3,4,2,3,4,5; 3,4,5,6,4,5,6,7];
D=[A;A];
D=[D D]; % size of matrix [4x16] %

1 个答案:

答案 0 :(得分:2)

将主对角线设置为从1开始并以1递增的整数:

D(eye(4)==1) = 1:4

或者概括一下:

n = min(size(D));
D(eye(n)==1) = 1:n;

请注意,==1是将eye(n)的输出(单位矩阵)转换为逻辑类型。

修改

这只是猜测所有对角线的意思,但这里是:

n = size(D,1);
m = size(D,2);
I = repmat(eye(min([n,m])), ceil(n/m), ceil(m/n));
I = I(1:n, 1:m)==1
d = repmat(1:min([n,m]), 1, max([ceil(n/m), ceil(m/n)]));
d = d(1:max(m,n));
D(I) = d