如何使用具有任意频率网格gf的Matlab函数cfirpm

How to use Matlab function cfirpm with arbitrary frequency grid gf

我正在尝试使用 Matlab 函数 cfirpm 来设计具有具有任意复杂期望响应的复杂脉冲响应的 FIR 滤波器。但是,似乎 Matlab 不允许我设置任意频率网格 gf.

这是一个虚拟示例,其中频率网格最初设置为只有四个值。但是,在 fresp 函数内部,网格 gf 有 256 个值。

n = 10;                              
f = [-1 1];                          
gf = linspace(-1,1,4);
h = cfirpm(n,f,@fresp);

function [dh,dw]=fresp(n,f,gf,w)
 dh = [1+1j;1+2j;-6-4j;-8];
 dw = ones(size(gf))
end

是我做错了什么还是gf不能设置为任意值? 谢谢!

gf 不是用户可以直接控制的参数:cfirpm 在内部生成 gf,根据可选 lgrid 参数指定的 'density' 值在 f 中的点之间进行插值。