私は先週Matlabをプログラミングし始めました。私は成功していない関数ファイルをプロットしようとしていました。別の.mファイルで関数をプロットする
これは機能ファイル(impuls.m)です。基本的に0 < = x < 5とx> 10に対してy = 0に設定する必要があります。 y = 5 for 5 < = x < = 10)。
function y = impuls(x)
if ((x>=0 && x<5) || x>10)
y=0;
else if (x>=5 && x<=10)
y=5;
end
end
end
私はIMPULSを使用して、私のメインファイル(fourierreihe.m)上でそれをテストする場合(1)私は「0」を取得するので、私は、私は右のそれをやったと思いますし、IMPULSを使用した場合(7)私は5を取得問題は、区間[0 13]のすべてのリサットを取得し、それらを長方形のインパルスとしてプロットしようとするときです。
私が使用してみました:
impuls([0 13])
しかし、私はエラーを取得しておいてください。
fouhierreihen
Operands to the || and && operators must be convertible to logical scalar values.
Error in impuls (line 3)
if ((x>=0 && x<5) || x>10)
Error in fouhierreihen (line 1)
impuls([0 13])
はずの私はANS = 0 0 0 0 0 5 5 5 5 5 5 0」として何かを得ることが0 0 "これを答えとして?
だから私は間違っていますか?私はビデオや投稿を検索したことがあり、間違いを見つけることはできません。どのように私はおそらく間隔のためにそれをプロットすることができますか?
ありがとうございます。 Pedro。
:ただし、
fplot
は、次の警告を投げ、アレイ入力が失敗した場合に機能出力要素ごとの(ループ)を計算に戻ります[0:13] 'は範囲です。エラーメッセージとドキュメンテーションの両方が指摘しているように、[短絡論理演算](https://www.mathworks.com/help/matlab/ref/logicaloperatorsshortcircuit.html)に必要な*スカラー*はありません。 [論理インデックス](https://www.mathworks.com/help/matlab/math/matrix-indexing.html?refresh=true#bq7egb6-1)または[値を繰り返し処理する](https:///www.mathworks.com/help/matlab/ref/for.html)。 – excazaまずはお返事ありがとうございます。範囲ではないとしても、それは私にimpuls(0)とimpuls(13)の答えを与えるべきではありませんか?私は関数ファイルが正しいと確信しています。私たちは先週同じ運動をしましたが、このように働いていました。私はちょうど機能をプロットするためにメインファイルでそれを動作させる方法を覚えていません。 – romanocph
いいえ、それは私の前のコメントで説明した理由ではありません。 '&&'と '||'はスカラーを渡さなければならず、 '[0 13]'と '[0:13]'のどちらもスカラーではありません。これが配列のために働いていたならば、 'impuls'の書かれた方法が違っていたり、外部でループで呼び出していたのです。 – excaza