2

次のような正方多対角行列を生成する効率的な方法はありますか?

[[1,2,3],
 [2,1,2],
 [3,2,1]]

[[1,2,3,4,5],
 [2,1,2,3,4],
 [3,2,1,2,3],
 [4,3,2,1,2],
 [5,4,3,2,1]]

これまでの私の努力は、次のような成果をもたらしました。

t=10
sum=zeros(t,t)
for i=1:t
 sum+=diag(ones(1,i)*(t-i)+1,t-i);
end
sum
sum+sum'-diag(ones(1,10),0)
4

2 に答える 2

6

このコマンドtoeplitzは、まさにあなたが望むことを行います:

toeplitz([1,2,3,4,5,6])

ans =

 1     2     3     4     5     6
 2     1     2     3     4     5
 3     2     1     2     3     4
 4     3     2     1     2     3
 5     4     3     2     1     2
 6     5     4     3     2     1
于 2013-03-04T20:03:20.577 に答える
5

探しているものは、対称 (エルミート) テプリッツ行列と呼ばれます。

私は matlab には詳しくありませんが、mathworks で次のドキュメントを見つけました。

于 2013-03-04T20:01:52.000 に答える