2017-08-08 30 views
2

こんにちは、私はmatlabとプログラミング全般を使い慣れています。matlabの間隔間隔

これらは私の命令との間隔で離間点の セットにおける電子0.8xcos =関数yを示すグラフを評価し、プロットdampedOsc機能の実装を完了し

値3倍でした0.1〜3πの範囲である。

カーブは、 の「五角形」のマーカーが付いたマゼンタの点線を使用して表示する必要があります。

と私のコード:

テスト1(その関数がプロットされたテスト):この1を除いて渡さ

function y = dampedOsc(x) 

    fplot(@(x) (exp(-0.8*x)*cos(3*x)),[0 3*pi()],'mp:') 
end 

すべてのテスト 実際の値が正しいサイズを持っていません。

expectedSize = 

    1 95 


actualSize = 

    1 98 

Test failed. 

私は正直に何が間違っていたのか分かりません、私はそれが不足のためだと思ったポイント間隔のしかし、私はそれを入力する方法がありません。

+0

あなたの指示にあるように、間隔が0.1であるはずですが、コードでは関数( 'fplot')があなたのために選択するようにしています。これを避けるには、関数 'plot'を使う必要があり、関数中の' x'を評価して 'y'値を生成する必要があります。 –

+0

ご返信ありがとうございます。それは私が何をするかわからない部分です。入力関数y = dampedOsc(x) fplot(@ 1)^( - 0.8 * x)*(3 * x )、[0:0.1:3 * pi()]、 'mp:') end 実際のサイズ出力は現在[1 54] x = 0:0.1:3 * pi()でしたが、エラーが発生し、機能がまったくない場合は、どこに置いているのか分かりますか?ありがとうございました – Marie

答えて

0

これは興味深い質問ですので、私はそれを刺します。私はおそらくこのようなことをするだろう。

function z = dampedOsc(x) 
    if isvector(x) == 0 
     return 
    else 
     z = zeros(1,length(x)); 
     for n = 1 : length(x) 
      y = exp(-0.8 .* x(n)) .* cos(3 .* x(n)); 
      z(1,n) = y; 
     end 
    end 
    z 
end 

その後、別のスクリプトからdampedOsc関数は、数値を与える必要があることを呼び出します。

plot([0 : 0.1 : (3*pi)],dampedOsc(x),'mp:') 

私の前にMATLABはありませんが、これはうまくいくと思います。もしそうでなければ、私はそれを修正することができます。あなたのプロジェクトに幸運を祈る!

+0

私は入力関数y = dampedOsc(x)(exp(1)^( - 0.8 * x)* cos(3 * x))、[0:0.1私はx = 0:0.1:3 * pi()を試しましたが、エラーが発生して関数がまったく実行されませんでした。私がどこに置いているのか知っていますか?私もplot([0:0.1:(3 * pi)]、dampedOsc(x)、 'mp:')を試してみました。ありがとう – Marie

+0

"actualSize output"はどういう意味ですか?あなたはベクトルの長さを意味しますか? "x = 0:0.1:3 * pi()"を試してみると、 'pi'のインスタンスを作成しているようなものは、カッコを使わないでください。 MATLABでこれを行う必要はありません。これがエラーの原因となる可能性があります。ちょうど 'pi'を使用してください。間隔は次のようになります: 'x = [0:0.1:(3 * pi)];' xは各値の間に0.1を持つ0から3のpiの値を含む行ベクトルです。 – ProgrammingEnthusiast

+0

ありがとう、私はこの関数を与えました。y = dampedOsc(x) fplot(exp(1)^( - 0.8 * x)* cos(3 * x))、[0:0.1:3 * piこの関数y = dampedOsc(x) fplot(exp(1)^( - 0.8 * x)* cos(3 * x))、 0:0.1:3 * pi; 'mp:') 私はまだ3/4の得点を記録していますが、トランスクリプトの出力(actualSize)は失敗しています。 – Marie