Matlab 归一化滤波器到实频滤波器的转换
如果我有下面的标准化带通滤波器,我如何将其转换为中心频率为697Hz,带宽为50Hz的滤波器Matlab 归一化滤波器到实频滤波器的转换,matlab,filter,signal-processing,Matlab,Filter,Signal Processing,如果我有下面的标准化带通滤波器,我如何将其转换为中心频率为697Hz,带宽为50Hz的滤波器 wHigh = (3*pi)/4; wLow = pi/4; M = 30; N = M + 1; n = -(N-1)/2 : (N-1)/2; hn = 1./( (n+eps)*pi ) .* ( sin( (n+eps)*wHigh ) - sin( (n+eps)*wLow ) ); hn = hn(:); dw = pi/400; w = 0.0:dw:pi; ak = hn; k
wHigh = (3*pi)/4;
wLow = pi/4;
M = 30;
N = M + 1;
n = -(N-1)/2 : (N-1)/2;
hn = 1./( (n+eps)*pi ) .* ( sin( (n+eps)*wHigh ) - sin( (n+eps)*wLow ) );
hn = hn(:);
dw = pi/400;
w = 0.0:dw:pi;
ak = hn;
k = 0;
for wc = w
k = k + 1;
expveca = exp(j*[M:-1:0]*wc);
expveca = expveca(:);
H(k) = sum(ak.*expveca)./exp(j*M*wc);
end
figure()
plot(w, abs(H));
set(gca, 'xlim', [0 pi]);
set(gca, 'xtick', [0:4]*pi/4);
set(gca,'XTickLabel',{'0','\pi/4','\pi/2','3\pi/4','\pi'});
grid on
在不重新设计新滤波器的情况下,保持此滤波器,并在“真实”情况下使用它(您称之为“真实”频率)的唯一方法是保持标准化滤波器(即设计为1 Hz采样率)和最终情况(您希望使用的采样率)之间的比例 您已设计了具有以下特征的带通滤波器:
Center : 0.250 Hz
Bandwidth : 0.250 Hz
Sample rate : 1 Hz
请注意,Center=带宽
。然后,如果您想要Center=697Hz
和Bandwidth=50Hz
,您需要重新设计一个新的过滤器,因为您的要求不符合比例
您可以选择:
Center : 697 Hz
Bandwidth : 697 Hz
Sample rate : 2788 Hz
或(不包括):
在这两种情况下,比例得到尊重,因此我可以使用您设计的过滤器
但首先要确定一件非常重要的事情,那就是你正在使用的采样率我不太明白,这就是为什么我在这里寻求帮助,伙计。有些代码是提供的,有些是我自己添加的。我不是要你们解什么,我是在征求意见。一般来说,你们会想做一个代换,比如
w=2*pi*f
,但要做到这一点,从数学方程开始要容易得多,因为这通常需要在积分(或和)之前加上归一化因子。另外,不能直接从代码开始:例如,如果w
标准化因子为1
,而f
标准化因子为1/2pi
(如傅里叶变换),您如何从代码中知道这一点?也就是说,我不认为从你发布的信息中可以做到这一点,我也不认识这个等式。而且,术语wHigh=(3*pi)/4
在这里没有真正的意义,这让我觉得有些问题wHigh
应该是一个角度频率(即,有一个时间元素),像这样的完美角度是不寻常的。因此,由于没有信息,代码中有错误,我怀疑这个问题无法解决。你的“真实频率滤波器”采样率是多少?
Center : 50 Hz
Bandwidth : 50 Hz
Sample rate : 200 Hz