DSP实验报告--高通滤波器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
高通滤波器设计报告
学号:172030085
姓名:徐军
一、实验目的:
1、了解FIR滤波器的原理及使用方法;
2、了解使用Matlab语言设计FIR滤波器的方法;
3、了解用DSP来实现FIR滤波器的设计及编程方法;
4、熟悉在CCS环境下对FIR滤波器的调试方法。
二、实验要求:
设计一个FIR高通滤波器,输入信号是频率为25Hz,50Hz的合成等幅信号,要求滤去25Hz信号成分,保留50Hz的信号成分。
三、实验设计:
本实验要求滤去25Hz的信号成分,保留50Hz的信号,根据耐特斯特准侧,采样频率需要大于最高频率的2倍,即设计的采样频率至少为100Hz的高通滤波器。先在MATLAB中验证设计思路,将得到的滤波器参数调用到DSP程序中,这样可以简化编译汇编连接的过程。然后通过图形仿真查看滤波前后的波形和频谱图。
四、实验步骤:
1、滤波器的MATLAB语言设计
2、在MATLAB中确定滤波器的各种参数
3、滤波器的程序设计
4、在CCS环境下调试程序
5、比较滤波前后的效果、观测滤波前后的波形
五、实验程序及结果:
(1)MATLAB程序:
main.m
f1=50;%信号频率Hz
f2=25;%信号频率Hz
fs=1000;%采样频率Hz
N=200;%采样点数
t=(0:N-1)/fs;%采样时间s
signal1=sin(2*pi*f1*t);
signal2=sin(2*pi*f2*t);
y=signal1+signal2;
%%原始信号时域波形图
figure(1);
plot(y);
%%axis([ 0 100 -2.5 2.5]);
hold on;
plot(signal1,'r');
legend('被污染的信号','理想信号');
%%原始信号频谱图
fy=fftshift(fft(y));
f=linspace(-fs/2,fs/2,N);
figure(2);
plot(f,abs(fy));
title('原始信号频谱');
xlabel('f/Hz');
ylabel('幅度');
axis([ 0 100 0 150]);
%%滤波后的时域波形图
figure(3);
Hd = high;
output=filter(Hd,y);
plot(output);
title('滤波后的波形');
%%滤波后的频域波形图
fy=fftshift(fft(output));
f=linspace(-fs/2,fs/2,N);
figure(4);
plot(f,abs(fy));
title('滤波后信号频谱');
xlabel('f/Hz');
ylabel('幅度');
axis([ 0 100 0 150]);
high.m
function Hd = high
%HIGH Returns a discrete-time filter object.
% MATLAB Code
% Generated by MATLAB(R) 8.3 and the Signal Processing Toolbox 6.21.
% Generated on: 12-Jul-2018 09:57:59
% Equiripple Highpass filter designed using the FIRPM function.
% All frequency values are in Hz.
Fs = 1000; % Sampling Frequency
Fstop = 25; % Stopband Frequency
Fpass = 50; % Passband Frequency
Dstop = 0.0001; % Stopband Attenuation
Dpass = 0.0575********; % Passband Ripple
dens = 20; % Density Factor [N, Fo, Ao, W] = firpmord([Fstop, Fpass]/(Fs/2), [0 1], [Dstop, Dpass]);
b = firpm(N, Fo, Ao, W, {dens});
Hd = dfilt.dffir(b);
实验结果:
Matlab环境下的滤波前后的时域波形:
滤波前的时域信号(左),滤波后的时域信号(右)Matlab环境下的滤波前后的频谱图形:
滤波前的频域信号(左),滤波后的频域信号(右)
(2)DSP在CCS下的程序:
源程序:
#include
#include
#include
#include
#include
#include"fdacoefs.h"
#define pi 3.14159
#define N30
#define length256
long yn;
int input[length];
int output[length];
void main()
{
int m,n;
int*x;