を使用して分割することはできません /
-
28-10-2019 - |
質問
私は値を取るいくつかの簡単な関数を持っています
この値は、別の値を計算するためのif文またはelseif文の数をオフにチェックされています。
問題は、実行しようとするとエラーが見つかるように見えることです
を使用してエラー / 行列の次元は一致しなければなりません。
Abcのエラー(9行目) a=5000/g;
コードは次のとおりです
function abc(g)
if (g == 100)
a = 1;
elseif (g <= 99 & g >= 50)
a = 200 -2*g;
elseif (g <= 50 & g >= 1)
a = 5000 / g;
else
warning('Invalid value passed, a defaults to 1');
a =1;
end
end
だから、私はabc100を渡し、私はaが1であることを期待していますが、代わりに各if/elseifを実行し、a=5000/gでエラーをスローします
また、最初にelseifで&&を使用しようとしたことにも言及する必要がありますが、これは次のエラーも発生しました
|/および&&演算子へのオペランドは、論理スカラー値に変換可能でなければなりません。
Abcのエラー(6行目) エルセイフ(g <=99&&g>=50)
ここで何が起こっているのか誰か考えていますか?ありがとう!
解決
あなたはおそらくあなたの関数に行列を渡しています。あなたが電話するとき
abc(yourdata)
yourdata
実際には1つの数ではなく、行列です。直接電話した場合
abc(100)
あなたはあなたの問題を見るべきではありません(またはあなたは?).
つまり, あなたの主な問題はあなたの関数の中にはありません, 、しかし、あなたがそれを呼び出すとき!
あなたの説明を考えると、あなたが設定したようです yourdata(1)
あなたがテストしたい値100に、しかし行列の他の要素は異なる値を持っています、それがなぜですか if
elseケースに分岐を構築します。そこに、あなたは必要です ./
の代わりに /
あなたがしたい場合 要素単位の分割 の代わりに 行列除算.
しかし、本当にあなたはおそらくそれを確認する必要があります yourdata
関数を呼び出すときはスカラーです。