0

インパルス応答を取得するために、matlab でフィルターの区分伝達関数を設定しようとしています。私は以下のコードを持っています:

function H = H(w)
H = zeros(size(w)); % Preallocating enough memory for y
nd = 0;

region1 = (abs(w)<(pi/4)) & (abs(w)>(pi/8)) ; % First interval
H(region1) = exp((-(w(region1))*1i*nd));

region2 = (abs(w)<(7*pi/8)) & (abs(w)>(5*pi/8)); % Second interval
H(region2) = exp((-0.5*(w(region1))*1i*nd));

region3 = ~(abs(w)<(pi/4)) & (abs(w)>(pi/8)) & ~(abs(w)<(7*pi/8)) & (abs(w)>(5*pi/8)) ; % Third interval
H(region3) = 0;

しかし、実行しようとすると、次のエラーが表示されます。

In an assignment  A(I) = B, the number of elements in B and I must be the same.Error 

in H (line 9)
H(region2) = exp((-0.5*(w(region1))*1i*nd));

私はこれを正しい方法で行っていますか、またはこのようなことを行うためのより簡単な方法はありますか?

4

1 に答える 1

0

問題は次のとおりだと思います。

H(region2) = exp((-0.5*(w(region1))*1i*nd));

次のようにする必要があります。

H(region2) = exp((-0.5*(w(region2))*1i*nd));

region1として修正されますregion2

また、nd常に 0 です。

あなたはそれについて正しい方法で行っているかどうかを尋ねますが、指定したポイント間の周波数応答がどこにでもある可能性があるか、遷移に依存しない可能性があることを認識している限り、私には十分にまともに思えます.

于 2013-07-08T20:19:47.893 に答える