【问题标题】:Matlab Piecewise Transfer FunctionMatlab分段传递函数
【发布时间】:2013-07-08 19:45:05
【问题描述】:

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

我是否以正确的方式进行此操作,还是有更简单的方法来执行此类操作?

【问题讨论】:

    标签: matlab


    【解决方案1】:

    我认为问题在于:

    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 变成一个系统?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多