2012-04-26 22 views
1

私はMatlabで簡単なシミュレーションを実行しようとしています。 私は、ランダム信号xとフィルタ伝達関数を持っています。フィルタ関数の適切な使い方は何ですか?フィルタ関数の使用法Matlab

x = rand(100,1); 
syms z; 
Pnum = (1-0.1*z^-1); 
Pdenum = (1-0.9*z^-1); 

y = filter(Pnum, Pdenum, x); 

これはエラー

"タイプ 'SYM' の入力引数用の未定義関数 'フィルタ'。" スロー

私はz変数について不平を言っていることを理解しています。どのように解決する必要がありますか?

答えて

2

フィルタコマンドは、シンボリックデータ型を使用するようには構築されていません。生のフィルタ係数を入力として受け取ります。あなたが定義しようとしているように見えるものは、b係数があるところの差の式です。 。

b = [1 0.1]; 

とA係数

y = filter(b,a,x) 

を次のように、信号をフィルタリングすることができ

a = [1 0.9]; 

ある関数freqzコマンドは、これはいくつかのゲインとの奇妙なハイパスフィルタであることが明らかになりました。 。

freqz(b,a) 

enter image description here

あなたが達成しようとしている何本か?あなたは、係数そう

b = [1 0.9]; 
a = [1 0.1]; 

を逆にした場合

は...あなたは、いくつかの利得ものは上の私の最初のステップです

freqz(b,a) 

enter image description here

+0

とローパスフィルタで終わりますDSPの/ MATLABの地面と私の課題を解決するために一歩前進:)非常に説明をありがとう。 – SneakyMummin

+0

あなたを正しい方向に押してください。割り当ての運が良かった – learnvst