2017-02-01 6 views
0

私はXShooterのデータを扱っています。銀河の補正には、ccm_unredをMATLABで使用しています。問題はMATLABで大きな配列を1Dに限定する

funred = flux*10.^(0.4*A_lambda); 

このコード行は29686 X 29686 doubleの配列を生成します。私はそれの片側だけを欲しければ、私はfunredfunred = funred(:,1)として再割り当てすることでそれを行うことができますが、コードのこの部分も実行され、私のCPUとRAMを使いすぎて安定していません。 funredの世代を最初から(:,1)に制限する方法はありますか?

答えて

0

あなたのコードでは29686 X 29686行列が生成されますが、あなたは方程式で要素ごとの演算を行っています。つまり、fluxまたはA_lambdaのバストは29686×29686です。そのサイズのものをスライスしてください。そのうちの一つを想定し

はちょうど行列ではありません1の(:,1)を取り除くX 29686 29686

funred = flux(:,1)*10.^(0.4*A_lambda(:,1)); 

です。

flux*...は、マトリックス全体が動作する必要があるため、両方がマチスである場合は実行できません。

+0

そこには1つの行列操作があります。したがって、1つの行列しかない場合はこれがうまくいくと私は同意しますが、両方の行列である場合は正しくありません。私はあなたが 'funred = flux * 10。^(0.4 * A_lambda(:、1))'を両方とも行列にする必要があると思います。 –

+0

@DennisJaheruddinあなたは正しいです。 –

+0

@AnderBiguriありがとうございます。問題は 'A_lambda'でした。コードに2つの' funred'行があり、何が起こるか心配でした。時間消費は今では0.8秒です:-) –

関連する問題