根据胡广书《现代数字信号处理》中复数调制滤波器组理论。
先设计一个低通原型滤波器,单位抽样响应为,频带范围为。
通过调制得到M个分析滤波器。调制因子是 ,相应频谱是做均匀位移所得。
这里滤波器组个数M=256,滤波器阶数256。测试信号为线性调频信号。
%% DFT分析滤波器组(chirp测试文件)
%用fir1函数设计FIR滤波器
%再调制单位脉冲响应
clc
close all
clear all
%% 设计原型滤波器
M=256; %滤波器个数
N=257; %滤波器长度
fs=5000; %采样频率
fc_lpf=200;
%以采样滤波的一半,对频率进行归一化处理
% wn_lpf=fc_lpf*2/fs;
wn_lpf=1/(2*M);
%采用fir1函数设计FIR滤波器
b1=fir1(N-1,wn_lpf);
%幅频响应
m1=20*log10(abs(fft(b1)));
%设置幅频响应的横坐标单位为Hz
x_f=(0:(fs/length(m1)):fs/2);
% figure(1)
% plot(abs(b1));
% figure(2)
% plot(x_f,m1(1:length(x_f)));
% plot(abs(fft(b1)));
%% 测试信号
t=0:1/fs:1;
sig=chirp(t,0,1,5000);
%% 调制单位脉冲响应
n=1:N;
b_out=zeros(M,N);%每个滤波器的单位抽样响应
y_out=zeros(M,length(sig));%通过滤波器组后的信号矩阵
for i=1:M
k=i-1;
b_channel=b1.*exp(1i*2*pi*n*(k/M)); %对原型滤波器H(z)的单位抽样响应h(n)复数调制
y_channel_out=filter(b_channel,1,sig);
b_out(i,:)=b_channel; %每个通道的单位抽样响应
y_out(i,:)=y_channel_out; %输出时频信号矩阵
% plot(20*log10(abs(fft(b_channel))));
% axis([0 M -30 0]);
% hold on
end
figure,imagesc(abs(y_out));
频率范围0-2*pi的chirp信号通过分析滤波器组后的结果如下图:
可以看到有通过滤波器组有延时,延时为 .
把延时去掉
delay=(N-1)/2; %群延时
y_out_delay=y_out(:,delay:length(y_out));
l=ceil(length(t)/2);
figure,imagesc(abs(y_out_delay(1:(M/2),1:l)));
结果如下图:
横坐标为时间间隔,纵坐标为频率。
存在一些问题:是否是因为傅里叶变换而使得信号在频域对称。