fvtool幅度归一化

  我们在用matlab设计滤波器后,可以用fvtool来看滤波器的频响,比如我们有了滤波器的系数后,直接用fvtool。

fircoe = [0.018641, 0.018275,-0.020377,-0.071243,-0.049673,...
    0.094562, 0.28841, 0.37949, 0.28841, 0.094562,-0.049673,...
    -0.071243,-0.020377, 0.018275, 0.018641];
fvtool(fircoe);

在这里插入图片描述

  从图中可以很容易看出,阻带衰减大概在40db左右。

  但还有些滤波器,设计出来后增益并不是0,比如下面的cic滤波器。我们首先用dsp.CICDecimator设计了一个CIC滤波器,然后紧跟着一个CIC补偿滤波器,该补偿滤波是一个FIR滤波器。最后把这两个滤波器和CIC+FIR级联后的频响画到一图中。

fs = 100e6;
cic_rate = 4;
cic_flt = dsp.CICDecimator(cic_rate,1,5);
fpass=fs/cic_rate*0.35/2;
fstop=fs/cic_rate*0.5/2;
cic_comp = design(fdesign.ciccomp(cic_flt.DifferentialDelay, ...
        cic_flt.NumSections,fpass,fstop,.3,20,fs/cic_rate));
comp_fir = dsp.FIRFilter('Numerator',cmop_coe);
cascade_flt = cascade(cic_flt,comp_fir);
fvtool(cic_flt,comp_fir,...
cascade_flt,'Fs',[fs fs/cic2_rate fs])
yticks([-200:20:0])

在这里插入图片描述

  从图中可以看出,补偿的FIR滤波器增益大概为0,而CIC滤波器增益在60dB。怎么把CIC滤波器的频响显示的幅度也归一化到0呢?(因为归一化到0后,在文档中就很容易看出该滤波器阻带抑制特性)

  可以在fvtool的窗口中,右键选择Analysis Parameters...,如下图。

在这里插入图片描述

然后再勾选Normalize Magnitude to 1(0dB),再点Save as Default

在这里插入图片描述

这样以后我们再用fvtool画滤波器频谱时,就会显示成归一化的样式。

在这里插入图片描述

欢迎关注微信公众号:Quant_Times

欢迎大家学习我的课程:
System Generator & HLS数字信号处理教程

%% 生成信号 Fs = 100000; % 采样频率100kHz T = 0.1; % 采样时间0.1秒 t = 0:1/Fs:T-1/Fs; % 时间向量(10000个点) f1 = 5000; % 信号1频率5kHz f2 = 20000; % 信号2频率20kHz s1 = sin(2*pi*f1*t); s2 = sin(2*pi*f2*t); % 混合并归一化 s = s1 + s2; s = s / max(abs(s)); % 归一化到[-1,1]范围 %% 绘制原始信号 figure; subplot(3,1,1); plot(t, s1); xlim([0 0.002]); % 显示前2ms数据 title('原始信号 s1 (5kHz)'); xlabel('时间 (s)'); ylabel('幅度'); subplot(3,1,2); plot(t, s2); xlim([0 0.002]); title('原始信号 s2 (20kHz)'); xlabel('时间 (s)'); ylabel('幅度'); subplot(3,1,3); plot(t, s); xlim([0 0.002]); title('混合归一化信号'); xlabel('时间 (s)'); ylabel('幅度'); %% FFT分析 N = length(s); f = (0:N-1)*(Fs/N); % 频率坐标 S = fft(s); figure; plot(f(1:N/2), abs(S(1:N/2))/(N/2)); % 显示单边频谱 xlabel('频率 (Hz)'); ylabel('幅度'); title('混合信号频谱'); xlim([0 25000]); % 显示0-25kHz范围 %% 设计带通滤波器 % 设计保留5kHz的带通滤波器 bpFilt5k = designfilt('bandpassiir',... 'FilterOrder',4,... 'HalfPowerFrequency1',4500,... 'HalfPowerFrequency2',5500,... 'SampleRate',Fs); % 设计保留20kHz的带通滤波器 bpFilt20k = designfilt('bandpassiir',... 'FilterOrder',4,... 'HalfPowerFrequency1',19500,... 'HalfPowerFrequency2',20500,... 'SampleRate',Fs); %% 滤波处理 s1_filtered = filtfilt(bpFilt5k, s); s2_filtered = filtfilt(bpFilt20k, s); %% 绘制滤波结果 figure; subplot(2,1,1); plot(t, s1_filtered); xlim([0 0.002]); title('滤波后s1 (5kHz)'); xlabel('时间 (s)'); ylabel('幅度'); subplot(2,1,2); plot(t, s2_filtered); xlim([0 0.002]); title('滤波后s2 (20kHz)'); xlabel('时间 (s)'); ylabel('幅度'); %% 滤波后信号频谱验证 S1_filtered = fft(s1_filtered); S2_filtered = fft(s2_filtered); figure; subplot(2,1,1); plot(f(1:N/2), abs(S1_filtered(1:N/2))/(N/2)); title('滤波后s1频谱'); xlabel('频率 (Hz)'); ylabel('幅度'); xlim([0 25000]); subplot(2,1,2); plot(f(1:N/2), abs(S2_filtered(1:N/2))/(N/2)); title('滤波后s2频谱'); xlabel('频率 (Hz)'); ylabel('幅度'); xlim([0 25000]); %% 滤波器频率响应验证(可选) % fvtool(bpFilt5k); % fvtool(bpFilt20k);在这个代码的基础上进行修改,归一后进行量化处理,频谱的幅度不要处理,给信号输入加一些白噪声
03-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值