QQ:290632690 肤浅。。。制作
图3
用MATLAB回读C盘根目录下的matlab_wave_data.txt文件,验证存入的波形数据是否正确,MATLAB代码如下:
fid = fopen('c:/matlab_wave_data.txt','r'); for i = 1 : 5001;%一共有5001个数据
num(i) = fscanf(fid, '%x', 1);%从fid所指的文件中,以16进制的方式读出一个数据 end fclose(fid); figure(2); plot(num,'b');
legend('MATLAB从txt文件中读出的原始叠加波形数据'); title('直接回读MATLAB产生的两个正弦信号的叠加波形'); 显示的波形如图4所示:
1
QQ:290632690 肤浅。。。制作
图4
对比图4和图2中的叠加波形,可知以上操作的正确性。 1) 用MATLAB设计FIR滤波器
输入信号是频率别为0.5MHz和2MHz的正弦信号的叠加,我们的任务是设计一个低通滤波器滤除掉2MHz的干扰信号。因此,我们可以设计一个采样率为25MHz的低通滤波器,其通带带宽为1MHz,阻带宽度为2MHz。通带内纹波抖动为1dB,阻带下降为80dB。
在MATLAB的命令窗口输入:fdatool命令并回车,打开FDATool工具箱,用MATLAB的FDATool工具设计该滤波器,参数设置如图5所示:
设计好参数后,点击DesignFilter,可以在FDATool窗口的左上角看到滤波器的阶数为63阶,点击File ?Generate M-file,并将滤波器命名为mylowfilter。
2
QQ:290632690 肤浅。。。制作
图5
编写如下代码,滤除混叠信号中的高频信号。 Hd = mylowfilter; % 滤波器名称
output = filter(Hd, y1); % 对叠加信号 y ,进行滤波处理 figure(3); plot(y2, 'k'); hold on; plot(output, 'r');
legend('0.5MHz原始信号','滤波后取出的信号'); title('信号通过MTALAB的低通滤波器后的波形'); 滤波后的波形如图6所示:
3