MATLAB R2021a无法识别freqz_m

MATLAB R2021a中能识别的函数是freqz,但是无法识别freqz_m函数。

方法一:

若只想了解图像趋势,可以直接用freqz函数替代freqz_m函数,因为freqz_m函数可以有多个输出,但是freqz函数只有两个,所以可以分次进行替代,直到把所有输出都包含

例如:[db,mag,pha,grd,w]=freqz_m(b,a);语句

可以替换为:

[mag,w]=freqz(b,a);
[db,pha]=freqz(b,a);
[grd]=freqz(b,a);

这样替换会造成种类似图像平滑的效果。

原图像:

替换后的图像:

 方法二:

方法二可以解决函数无法识别的问题。

先在命令行窗口输入指令:edit,会跳出以下的编辑窗口

 在编辑窗口中将freqz_m函数的定义语句写入,然后保存,切记要命名为freqz_m,否则在调用函数时依旧会报错。

freqz_m函数的定义:

function [db,mag,pha,grd,w] = freqz_m(b,a);
% Modified version of freqz subroutine
% ------------------------------------
% [db,mag,pha,grd,w] = freqz_m(b,a);
%  db = Relative magnitude in dB computed over 0 to pi radians
% mag = absolute magnitude computed over 0 to pi radians 
% pha = Phase response in radians over 0 to pi radians
% grd = Group delay over 0 to pi radians
%   w = 501 frequency samples between 0 to pi radians
%   b = numerator polynomial of H(z)   (for FIR: b=h)
%   a = denominator polynomial of H(z) (for FIR: a=[1])
%
[H,w] = freqz(b,a,1000,'whole');
    H = (H(1:1:501))'; w = (w(1:1:501))';
  mag = abs(H);
   db = 20*log10((mag+eps)/max(mag));
  pha = angle(H);
%  pha = unwrap(angle(H));
  grd = grpdelay(b,a,w);
%  grd = diff(pha);
%  grd = [grd(1) grd];
%  grd = [0 grd(1:1:500); grd; grd(2:1:501) 0];
%  grd = median(grd)*500/pi;

 然后就可以正常在命令行窗口正常调用函数freqz_m了。

  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值