Matlab分段传递函数

Matlab分段传递函数,matlab,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 = (

我试图在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;

我这样做是正确的还是有更简单的方法?

我认为问题在于:

H(region2) = exp((-0.5*(w(region1))*1i*nd));
应该是:

H(region2) = exp((-0.5*(w(region2))*1i*nd));
其中,
region1
被更正为
region2

而且,
nd
始终为0


你会问,你的方法是否正确,只要你意识到你指定的点之间的频率响应可能遍布整个地方,或者不取决于转换,我就觉得足够体面了。

这修正了我的错误,我现在如何绘制H的脉冲响应?脉冲函数采用sys参数。如何将我的H转换为sys?
H(region2) = exp((-0.5*(w(region2))*1i*nd));