2016-10-13 12 views
1

私はMatlabコードの専門家ではないので、現在はそれを使用してコーディングしていますが、matlabで同じサイズの変数を再アロートする簡単な方法があるのだろうかと思います。 :Matlabで同じサイズの変数を再呼び出しする

A=zeros(length(D),D); 
B=zeros(length(D),D); 
C=zeros(length(D),D); 
D=zeros(length(D),D); 

可変長のforループの結果としての行列です。 この方法は問題ありませんが、これを1行にまとめる簡単な方法はありますか? 私は[A、B、C、D] = 0(長さ(D)、D)を試しました。 が動作しませんでした。

アドバイスはありがとうございます。

答えて

0

MATLABでコーディングする場合は、私の提案はです。可読性のためには常にコードにしてください。一度それを働かせれば、あなたのコードの最適化がより速くなるかどうかを真に評価できたら、進んで最適化してください。しかし、私は、これらの割り当てをすべて1行のコードにまとめるだけでは、実際には何も最適化されないと主張します。

あなたはそこに何がありますか?これは完全に有効な一連のステートメントであり、1行で行う必要はありません。入力することを恐れている場合は、BCEを常にAに割り当ててください。この文の前にあるDを再定義するので、Dの最後の行をEに変更しました。私はこれがあなたの意図ではないと仮定しています。また、zeros(length(D), D)はナンセンスであることに注意してください。D私はいくつかのベクトルがあると仮定していますが、それをzerosの引数として使用しています。各パラメーターがスカラーであることを確認する必要があります。

MATLABは行列のコピーを実行し、参照を提供しないことを覚えておいてください(これには例外がありますが、ここでは触れません)。このような何かに動作します:

A = zeros(10, 10); 
B = A; C = A; E = A; 

しかし、あなたが本当に1行でこれを行うにしたい場合、あなたは一つの引数を取るようにdealを使用して、指定した各出力引数の上にコピーすることができます。

[A,B,C,E] = deal(zeros(10,10)); 

私はそれが読みにくいと主張しますが、それはあなたが求めていることをします。

+0

ありがとうございました。コースDはベクターです! – WA2050

+0

それはそれを解決していない! – WA2050

+0

はい、私はいくつかのエラーが出る前に、[A、B、C、E] = dealを使用します(0、 – WA2050

関連する問題