私は今発見したMatlabの動作を理解できません。ここでは、コードは次のとおりです。論理インデックスによって列の代わりに行が作成される
ix = logical([1; 0; 1]);
value = [2; 2; 2];
newValue(ix) = value(ix)
それは私が
2
0
2
を期待しながら、私は自分のコードの前にnewValue = nan(size(value))
を追加することで、それを「修正」することができます
を出力します。しかし、私はを理解したいと思います。なぜ Matlabは列ベクトルから行を作成します。
私はどちらも分かりませんが、newValue(ix、:) = value(ix) 'で期待通りの結果を得ることができます(' newValue'が存在しない場合はそうします)。 – Zep
@ Zepの場合、私の関数の出力が入力と同じ次元を持つようにしたいという問題があります(例えば組み込みの 'sin'の場合のように)。しかし、事前割り当てがなければ、説明されているように動作しません。そして、それがうまくいかないという事実は、私がMatlabの次元について根本的なものを見逃していることを示しています。だから私は最初の原則から私を困惑させる: – texnic
私は@ThéoP.があなたに答えたと思う:Matlabはデフォルトで行を作成する。列が必要な場合は、事前に割り当てるか、索引付けで指定します( 'newValue(ix、:)')。 – Zep