もう一人のための効率と私は複素数マトリックスアレイフォーマットは、より効率的であるかについての議論に入った:のように、インターリーブされた実部と虚部を格納複素数配列形式の私のオフィスでの一般的な操作
struct {
double real;
double imag;
} Complex foo[m][n];
または別々行列の実数部と虚数部を格納することによって:一方
struct {
double rarray[m][n];
double iarray[m][n];
} CArray foo;
を、Complex[][]
は複素数の配列の直接的表現の複数であり、要素単位で作業しやすいかもしれません。一方で、CArray
がより一般的に効率的になる可能性があります。例えば、Complex[][]
フォーマットは、(a + bi)*(c + di)の間にインターリーブされているように見えるが、CArray
フォーマットを使用して、コンポーネントアレイの4つの行列乗算を使用して行列乗算を行うことができる。 =(ad-bc)+(ac + bd)i)となる。どうやら、MATLABは後者の形式を使用します:enter link description here。
この質問を扱う他の情報源はありますか?
Javaなどのいくつかの言語で最適な別のオプションは、NxN行列をNx2Nの倍精度配列として使用することです。これは、Javaが構造型をサポートしていなくても、構造体の配列に似たメモリレイアウトを可能にします。 – supercat