質問

私は値を取るいくつかの簡単な関数を持っています

この値は、別の値を計算するための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 関数を呼び出すときはスカラーです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top