MATLAB调用fdatool设计的FIR滤波器

学习目标:

MATLAB调用fdatool设计的FIR滤波器

学习内容:

在这里插入图片描述

FIR_data_in_32bits.m

clc
clear all
close all
load FIR.mat   %FIR为上面的系数名称
f1 = 0.5; %信号1频率为500kHz
f2 = 5; %信号2频率为5MHz
Fs = 32; %采样频率为32MHz
N = 16;%量化位数

%产生信号
t = 0:1/Fs:5;
c1 = 2*pi*f1*t;
c2 = 2*pi*f2*t;

s1 = sin(c1); %产生正弦波
s2 = sin(c2); %产生正弦波
s  = s1 + s2; %产生两个单载波合成后的信号

s = s/max(abs(s));

%% MATLAB中调用fdatool实现低通滤波的功能
filter_s = filter(LP,1,s);
filter_s_fft = fft(filter_s,161*5);     %对回波信号进行快速傅里叶变换到频域
figure(4)
plot(abs(filter_s_fft)); 
xlabel('频域(采样点)');
ylabel('幅度');

figure(5)
plot(20*log10(abs(filter_s_fft))); 
xlabel('频域(采样点)');
ylabel('幅度(dB)');

%% 对信号在MATLAB中进行时域、频域分析
figure(1)
plot(s);
xlabel('时域(采样点)');
ylabel('幅度');

s_fft=fft(s,161*5);     %对回波信号进行快速傅里叶变换到频域

figure(2)
plot(abs(s_fft)); 
xlabel('频域(采样点)');
ylabel('幅度');

figure(3)
plot(20*log10(abs(s_fft))); 
xlabel('频域(采样点)');
ylabel('幅度(dB)');

%% 对信号进行量化取整,并调用gen_data_file_bin_32函数将量化后的数据写入txt文本,其中负数转化为其二进制补码对应的数进行写入
% 量化取整
lfm=round(2147483647*s);   %最大为2147483647,量化为32位

lfm(find(lfm<0))=lfm(find(lfm<0))+4294967296;  %为何加4294967296,把负数转化为其补码对应的数
gen_data_file_bin_32(lfm,'D:\Desktop\206FPGAcode\FIR_32bits_to_32bits\MATLAB\in_data.txt');

学习时间:

20200904下午

学习产出(仿真结果):

滤波后幅频特性图
在这里插入图片描述
滤波后幅频特性dB图
在这里插入图片描述

学习总结

发现问题

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

embrace_the_sunhaha

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值