Matlab分段传递函数

时间:2013-07-08 19:45:05

标签: matlab

我正在尝试在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));

我是以正确的方式解决这个问题,还是有更简单的方法来做这样的事情?

1 个答案:

答案 0 :(得分:0)

我认为问题在于:

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

应该是:

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

region1更正为region2

此外,nd始终为0.

你问你是否以正确的方式去做,只要你意识到你指定的点之间的频率响应可以在整个地方,或者不依赖于过渡,你对我来说是否合适。