1

私は次のような複合正弦波を設計しています

input=sin(2*pi*Fm_1*t) + sin(2*pi*Fm_2*t);

ここで、Fm_1、およびFm_2は、ユーザーによって指定され、

t=0:Ts:2*Tm;

どこ

Ts=1/Fs;
Tm=1/(maxof(Fm_1,Fm_2) (NOT A FUNCTION, just to explain)

and Fm_1 = 5and and Fm_2 = 10and Fs = 30 and plot usingplot(t,input);

なんらかの理由で出力は正しいのですが、正弦波ではなく三角波(直線)になっています。それ以外は、出力は正しいです。

編集:

同じスケールで2つのグラフをプロットしたため、2番目のグラフのエラーが最初のグラフを台無しにしてしまったことがわかりました。

ここで問題は、これを使用して入力をフィルタリングすることです。

  output = filtfilt(B,A,input);

プロットしたときに何も表示されないのはなぜですか(私も使用してみましたfilter)?

4

1 に答える 1

3

上記のコメントで述べたように、問題は、詳細なグラフをプロットするには低すぎるサンプリング頻度を使用していることです。これは、以下の関数を使用して確認できます。

function myplot(Fm_1, Fm_2, Fs)
  Ts = 1/Fs;
  Tm = 1/max(Fm_1,Fm_2);
  t = 0:Ts:2*Tm;
  input = sin(2*pi*Fm_1*t) + sin(2*pi*Fm_2*t);
  plot(t, input);
end

お気づきのFs = 30ように、次のようなプロットが得られます。

ここに画像の説明を入力してください

に増加するFs = 100と、状況は改善されます。

ここに画像の説明を入力してください

そしてFs = 1000、プロットは、おそらく最初に期待するものです:

ここに画像の説明を入力してください

上記のすべてについて、私は値Fm_1 = 5を使用しFm_2 = 10、あなたが提供したことに注意してください。

于 2012-12-19T19:25:10.630 に答える