0

行列の対角線を に置き換えるのは興味深い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] %
4

1 に答える 1

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
于 2013-03-28T08:59:55.587 に答える