B = M*A*N
の行列演算を探しています。ここで、A
はいくつかの一般正方行列で、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
のサイズはです。次に、C = repmat(v,m,1)
を定義します。私の行列はA = C-C.';
です。 したがって、A
は本質的にv
の値のすべての違いですが、私は値の間のある程度の距離にのみ興味があります。 これらは対角線のA
です。 m
は非常に大きいので、そのようなm x m
行列の構成はメモリ不足の問題を引き起こします。 私は可能な限り効率的な方法で(MATLABで)それらの対角線を抽出する方法を探しています。
ありがとうございます!
'M'と' N'の間にはどのような関係がありますか? 'N' =' M'^-1ですか?これは問題を単純化する –
あなたは事実上1つの方程式( 'B = M * A * N')と2つの未知数(' M'と 'N')を持っています。あるいは、与えられた 'A'に対して行列' B'を設定する関数だけが必要ですか? – Wolfie
はい。 MとNには自由がありますが、私はそれらの間の関係は知らないのです。変換は、一般的なAとM Nのいくつかの定数行列に対してちょうどうまくいくはずです。 – AsaridBeck91