magnitude == 1
はあなたに0/1のバイナリマスクを与え、論理的なインデックスによって、magnitude == 1
内の非ゼロ値の合計数はedgels
にあなたが代入されている要素の合計数と一致する必要がありますので、あなたは、そのエラーを取得していますそうではありません。
あなたが求めるものを行うための最も簡単な方法は、大きさがない 1、または0である、あなたならば、ただし0
edgels(magnitude == 0) = 0;
にそれらの値を設定する場所edgels
のすべての値を見つけることであろうあなたのロジックと一緒に行きたい、あなたが最初の出力に対応する位置でmagnitude == 1
位置を変更し、その後、ゼロ行列を作成します。
out = zeros(size(edgels));
out(magnitude == 1) = edgels(magnitude == 1);
テイク左の通知と、右手のide。コピーする必要がある要素の総数は同じです。
out = edgels .* double(magnitude);
注:
私が提供できる別の方法としては、単純にmagnitude
とedgels
要素単位magnitude
におけるいくつかの要素が0に等しく、そうでない場合はそのままであれば乗算は0の結果が得られ乗算することです乗算を有効にするには、magnitude
をedgels
と同じ型にキャストする必要があります。そうしないと、MATLABはさまざまな型の行列を掛けることについてエラーを返します。
1以外の残りの値はどうなりますか?これらはどのように設定すべきですか? 'magnitude == 1'は0/1のバイナリマスクを与え、論理インデックスによって' magnitude == 1'の非ゼロ値の総数はあなたの要素の総数と一致する必要がありますedgelsに割り当てられていますが、そうではありません。 – rayryeng
@rayryeng申し訳ありません。編集を参照してください。 – havakok
'edgels(大きさ== 1)'は '1'に等しいエントリーの' numel'を持ち、 'edgels'は完全なマトリックスです。 – TroyHaskin