Matlab 替换矩阵的对角线

Matlab 替换矩阵的对角线,matlab,matrix,diagonal,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开始递增1的整数,请执行以下操作: D(eye(4)==1) = 1:4 或者概括一下: n = min(size(D)); D(eye(n)==1) = 1:n; 这里注意,==1是将身份矩阵eye(n)的输出转换为逻辑类型 编辑: 这只是一个

我有兴趣将矩阵
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开始递增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

你所说的对角线是什么意思?D是一个非方矩阵。@Kishore,a也是为非方矩阵定义的。你好,丹,这只改变了矩阵中的一条对角线,我想改变矩阵中的所有对角线。还有什么其他对角线?请提供一个手动计算的示例,并将其添加到您的问题中(编辑原始问题),以便我们了解您的意思。没问题,请将答案标记为正确,如果您觉得有帮助,请向上投票(单击此答案左上角的箭头和勾号)