次の形式の行列演算を探しています。B = M*A*N
whereA
は一般的な正方行列であり、M
およびN
は見つけたい行列です。の列B
が の対角線になるようにしますA
。最初の列はメインの対角線、2 番目の列はメインから 1 だけシフトした対角線などです。
たとえば、MATLAB 構文では次のようになります。
A = [1, 2, 3
4, 5, 6
7, 8, 9]
と
B = [1, 2, 3
5, 6, 4
9, 7, 8]
編集: 純粋な線形代数のソリューションは存在しないようです。したがって、私がやろうとしていたことについてより正確になります。
v
サイズのベクトルの場合1 x m
。次に を定義しますC = repmat(v,m,1)
。私の行列はA = C-C.';
です。したがって、A
本質的には値のすべての違いですが、値v
間の距離までの違いにのみ興味があります。これらは の対角線ですA
。しかし、m
非常に大きいため、このようなm x m
行列を構築するとメモリ不足の問題が発生します。(MATLAB で) 可能な限り効率的な方法でこれらの対角線を抽出する方法を探しています。
ありがとう!