• 大小: 98KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-08-05
  • 语言: Matlab
  • 标签: FIR  

资源简介

综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用MATLAB作为编程工具进行计算机实现。

资源截图

代码片段和文件信息

clear;
clc;
%
f_pn=170;       %正弦波信号频率
f_sn=630;       %三角波信号频率
l=32768;         %信号的长度
fs=22050;       %采样频率
%生成信号
figure(1);
t=(0:l-1)/fs;
pn=sin(2*pi*f_pn*t);            %正弦波信号
subplot(311);
plot(1000*t(1:l/4)pn(1:l/4)); 
title(‘正弦波信号时域波形‘);
xlabel(‘时间(ms)‘);
ylabel(‘幅度‘);
sn=sawtooth(2*pi*f_sn*t0.5);   %三角波信号
subplot(312);
plot(1000*t(1:l/4)sn(1:l/4)); 
title(‘三角波信号时域波形‘);
xlabel(‘时间(ms)‘);
ylabel(‘幅度‘);
dn=randn(size(t));              %随机噪声信号
subplot(313);
plot(1000*t(1:l/4)dn(1:l/4)); 
title(‘随机噪声信号时域波形‘);
xlabel(‘时间(ms)‘);
ylabel(‘幅度‘);

%信号合成分析
figure(2);
xn=pn+sn+dn;%信号合成
subplot(211);
plot(1000*t(1:l/4)xn(1:l/4)); 
title(‘合成信号时域波形‘);
xlabel(‘时间(ms)‘);
ylabel(‘幅度‘);
grid on;
subplot(212);
% 信号的频谱图
NFFT = 2^nextpow2(l);
Y = fft(xnNFFT)/l;
f = fs/2*linspace(01NFFT/2);
YM=2*abs(Y(1:NFFT/2));
plot(f(1:NFFT/16)YM(1:NFFT/16));
title(‘信号频谱‘);
xlabel(‘频率Hz)‘);
ylabel(‘幅度|Y(f)|‘);
grid on;

% 滤出正弦波信号
figure(3);
%fir带通滤波器:
Wp1=2*(f_pn-50)/fs;
Wp2=2*(f_pn+50)/fs;
Ws1=2*(f_pn-100)/fs;
Ws2=2*(f_pn+100)/fs;
Ap=1;
As=100;
W1=(Wp1+Ws1)/2;
W2=(Wp2+Ws2)/2;
wdth=min((Wp1-Ws1)(Ws2-Wp2));
N=ceil(11*pi/wdth)+1;
[ba]= fir1(N[W1 W2]);
[Hw]=freqz(bafs);
subplot(311);
plot(w*fs/(2*pi)abs(H));
axis([0 1400 -0.05 1.05]);
title(‘fir带通滤波器幅频响应‘);
xlabel(‘频率 (Hz)‘‘FontSize‘ 8.0)
ylabel(‘|H(f)|‘)
grid on;

s=xn;
%对信号进行滤波
sf0=filter(bas);
subplot(312);
plot(1000*t(1:l/4)sf0(1:l/4)); 
title(‘滤波后的时域波形‘);
xlabel(‘时间(ms)‘);
ylabel(‘幅度‘);
grid on;
subplot(313);
% 信号的频谱图
NFFT = 2^nextpow2(l);
Y = fft(sf0NFFT)/l;
f = fs/2*linspace(01NFFT/2);
YM=2*abs(Y(1:NFFT/2));
plot(f(1:NFFT/16)YM(1:NFFT/16));
title(‘滤波后的频谱图‘);
grid on;

% 滤出三角波信号
figure(4);
%fir带通滤波器:
Wp1=2*(f_sn-50)/fs;
Wp2=2*(f_sn+50)/fs;
Ws1=2*(f_sn-100)/fs;
Ws2=2*(f_sn+100)/fs;
Ap=1;
As=100;
W1=(Wp1+Ws1)/2;
W2=(Wp2+Ws2)/2;
wdth=min((Wp1-Ws1)(Ws2-Wp2));
N=ceil(11*pi/wdth)+1;
[ba]= fir1(N[W1 W2]);
[Hw]=freqz(bafs);
subplot(311);
plot(w*fs/(2*pi)abs(H));
axis([0 1400 -0.05 1.05]);
title(‘fir带通滤波器幅频响应‘);
xlabel(‘频率 (Hz)‘‘FontSize‘ 8.0)
ylabel(‘|H(f)|‘)
grid on;

s=xn;
%对信号进行滤波
sf0=filter(bas);
subplot(312);
plot(1000*t(1:l/4)sf0(1:l/4)); 
title(‘滤波后的时域波形‘);
xlabel(‘时间(ms)‘);
ylabel(‘幅度‘);
grid on;
subplot(313);
% 信号的频谱图
NFFT = 2^nextpow2(l);
Y = fft(sf0NFFT)/l;
f = fs/2*linspace(01NFFT/2);
YM=2*abs(Y(1:NFFT/2));
plot(f(1:NFFT/16)YM(1:NFFT/16));
title(‘滤波后的频谱图‘);
grid on;


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件      139776  2013-04-08 10:58  数字信号处理课程设计+FIR数字滤波器.doc
     文件        2764  2013-04-08 02:48  源代码.m

评论

共有 条评论