通信人家园

 找回密码
 注册

只需一步,快速开始

短信验证,便捷登录

搜索

军衔等级:

  新兵

注册:2012-7-29
跳转到指定楼层
1#
发表于 2012-8-7 11:28:37 |只看该作者 |倒序浏览
请教大家一个问题,两个滤波器级联,如果都工作在相同的采样频率下,总的频率响应可以直接在频域相乘得到;
但是在数字上、下变频中,由于各滤波器工作在不同的采样频率下,因次总的频率响应不能直接在频域相乘得到,
那要怎么算呢。
下面是我写的一小段程序,程序很简单,就是两个2倍抽取的HBF级联,怎么计算总的频率响应呢?
还有如果是插值的话,又该如何计算呢?
clear;
clc;
%%%%%%%%%%%%%%%%%%%%%%  第一个HBF,fs=10e6,2倍抽取 %%%%%%%%
fs = 10e6;
Wp = 1e6;         
Ws = fs/2 - Wp;                     
Rs = 60;         
fcuts = [Wp Ws];
devs = [10^(-Rs/20) 10^(-Rs/20)];
mags = [1 0];
[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs,fs);
if floor(n/2) == n/2
    n = n;
else
    n = n + 1;
end;
b = fir1(n,Wn,kaiser(n+1,beta),'noscale');
[h1,f1] = freqz(b,1,1024,fs);
subplot(2,2,1);    % 频响
plot(f1,abs(h1));
grid;
subplot(2,2,2);    % 频响(dB)
plot(f1,20*log10(abs(h1)));
grid;
%%%%%%%%%%%%%%%%%%%%%%  第二个HBF,fs=5e6,2倍抽取 %%%%%%%%%
fs = 10e6/2;
Wp = 1e6;         
Ws = fs/2 - Wp;                     
Rs = 60;         
fcuts = [Wp Ws];
devs = [10^(-Rs/20) 10^(-Rs/20)];
mags = [1 0];
[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs,fs);
if floor(n/2) == n/2
    n = n;
else
    n = n + 1;
end;
b = fir1(n,Wn,kaiser(n+1,beta),'noscale');
[h2,f2] = freqz(b,1,1024,fs);  % 频响
subplot(2,2,3);
plot(f2,abs(h2));
grid;
subplot(2,2,4);    % 频响(dB)
plot(f2,20*log10(abs(h2)));
grid;

举报本楼

您需要登录后才可以回帖 登录 | 注册 |

手机版|C114 ( 沪ICP备12002291号-1 )|联系我们 |网站地图  

GMT+8, 2024-4-28 05:05 , Processed in 0.094180 second(s), 15 queries , Gzip On.

Copyright © 1999-2023 C114 All Rights Reserved

Discuz Licensed

回顶部