matlab在p2hp处解析错误


rp=l; rs=30;wp=0.8*pi; ws=0.9*pi;Fs=1;wap=tan (p/2); was=tan(ws/2);
[n, wn]=buttord(wap, was, rp, rs, 's');
[z, p, k]=buttap(n);
[bp, ap]=zp2tf (z, p, k);
[bs, as]=1p2hp (bp, ap, wap);
[bz, az]=bilinear (bs, as, Fs/2);
yl=filter (bz, az, x);[hl, wl]=freqz (bz, az, 256, Fs);
[h2, w2]=fregz (y1);figure;subplot (2, 1, 1) ;plot (wl/pi, abs (h1));
title('幅度响应');subplot (2, 1, 2) ;plot (w2/pi, abs (h2));
title('经过滤波后');
[X, W]=freqz(x); 
figure(2)
plot(w/p1, abs (X));

第5行语法错误是怎么一回事

问题解答:

第5行代码 wap=tan(p/2); 中的语法错误是变量p没有被定义。应该先定义变量p才能使用它进行计算。具体解决方法为添加一行代码 p = some_value;,其中 some_value 是变量p需要赋的值。

代码示例:


rp=l; rs=30;wp=0.8*pi; ws=0.9*pi;Fs=1;p=2;wap=tan (p/2); was=tan(ws/2);
[n, wn]=buttord(wap, was, rp, rs, 's');
[z, p, k]=buttap(n);
[bp, ap]=zp2tf (z, p, k);
[bs, as]=1p2hp (bp, ap, wap);
[bz, az]=bilinear (bs, as, Fs/2);
yl=filter (bz, az, x);[hl, wl]=freqz (bz, az, 256, Fs);
[h2, w2]=fregz (y1);figure;subplot (2, 1, 1) ;plot (wl/pi, abs (h1));
title('幅度响应');subplot (2, 1, 2) ;plot (w2/pi, abs (h2));
title('经过滤波后');
[X, W]=freqz(x); 
figure(2)
plot(w/p1, abs (X));