数字信号处理课程设计报告.docx
《数字信号处理课程设计报告.docx》由会员分享,可在线阅读,更多相关《数字信号处理课程设计报告.docx(13页珍藏版)》请在冰豆网上搜索。
![数字信号处理课程设计报告.docx](https://file1.bdocx.com/fileroot1/2022-11/22/03922a2d-bd1a-473a-b1d5-c459c0193551/03922a2d-bd1a-473a-b1d5-c459c01935511.gif)
数字信号处理课程设计报告
班级:
学号:
姓名:
设计一正余弦信号的谱分析
【一】设计要求
1.对一个频率为10Hz的连续余弦信号,以采样频率为64Hz得到离散余弦序列,对此余弦序列进行32点进行谱分析,画出其频谱图;若将信号频率改为11Hz,其他参数不变,重新画出该序列的频谱图,观察频谱泄漏现象,分析原因。
2.考察DFT的长度对双频率信号频谱分析的影响。
设待分析的信号为
(1.2)
令两个长度为16的正余弦序列的数字频率为
及
。
取N为四个不同值16,32,64,128。
画出四个DFT幅频图,分析DFT长度对频谱分辨率的影响。
3.在上题中若把两个正弦波的频率取得较近,令
,
,试问怎样选择FFT参数才能在频谱分析中分辨出这两个分量?
【二】设计原理
【三】源程序清单
1
N=input('输入谱分析的长度')
n=0:
N-1;
T=1/64;
x1=cos(20*pi*n*T);
subplot(2,2,1);
stem(n,x1);xlabel('n');ylabel('x1(n)');%绘制序列的波形
title('余弦序列');
X1=abs(fft(x1,N));%求余弦序列的N点FFT
subplot(2,2,2)
k=0:
N-1;
stem(k,X1)%绘制序列的幅频特性曲线
xlabel('k');ylabel('X(k)');
string=[num2str(N),'点FFT幅频曲线'];
title(string);
x2=cos(22*pi*n*T);
subplot(2,2,3);
stem(n,x2);xlabel('n');ylabel('x1(n)');%绘制序列的波形
title('余弦序列');
X2=abs(fft(x2,N));%求余弦序列的N点FFT
subplot(2,2,4)
k=0:
N-1;
stem(k,X2)%绘制序列的幅频特性曲线
xlabel('k');ylabel('X(k)');
string=[num2str(N),'点FFT幅频曲线'];
title(string);
2.
f1=0.22;
f2=0.34;
n=0:
16;
x=0.5*sin(2*pi*f1*n)+sin(2*pi*f2*n);
X1=abs(fft(x,16));
subplot(2,2,1),stem(n,x),xlabel('n');ylabel('x1(n)');
k=0:
15;
stem(k,X1)%绘制序列的幅频特性曲线
xlabel('k');ylabel('X(k)');
string=[num2str(16),'点FFT幅频曲线'];
title(string);
X2=abs(fft(x,32));
subplot(2,2,2),stem(n,x),xlabel('n');ylabel('x1(n)');
k=0:
31;
stem(k,X2)%绘制序列的幅频特性曲线
xlabel('k');ylabel('X(k)');
string=[num2str(32),'点FFT幅频曲线'];
title(string);
X3=abs(fft(x,64));
subplot(2,2,3),stem(n,x),xlabel('n');ylabel('x1(n)');
k=0:
63;
stem(k,X3)%绘制序列的幅频特性曲线
xlabel('k');ylabel('X(k)');
string=[num2str(64),'点FFT幅频曲线'];
title(string);
X4=abs(fft(x,128));
subplot(2,2,4),stem(n,x),xlabel('n');ylabel('x1(n)');
k=0:
127;
stem(k,X4)%绘制序列的幅频特性曲线
xlabel('k');ylabel('X(k)');
string=[num2str(128),'点FFT幅频曲线'];
title(string);
【四】设计结果
1.
2.
【五】结果分析
设计二数字滤波器的设计及实现
【一】设计要求
1调用信号产生函数mstg产生由三路抑制载波调幅信号相加构成的复合信号st,观察st的时域波形和幅频特性曲线;
2要求将st中的三路调幅信号分离,通过观察st的幅频特性曲线,分别确定可以分离st中三路抑制载波单频调幅信号的三个滤波器(低通滤波器、带通滤波器、高通滤波器)的通带截止频率和阻带截止频率,要求滤波器的通带最大衰减为0.1dB,阻带最小衰减为60dB;
3编程调用MATLAB滤波器设计函数分别设计这三个数字滤波器,并绘图显示其幅频特性曲线;
4调用滤波函数filter,用所设计的三个滤波器分别对复合信号st进行滤波,分离出st中的三路不同载波频率的调幅信号,并绘图显示滤波后信号的时域波形和频谱,观察分离效果。
【二】设计原理
【三】源程序清单
%产生信号序列st,并显示st的时域波形和频谱
%st=mstg返回三路调幅信号相加形成的混合信号,长度N=800
N=800;%信号长度N为800
Fs=10000;T=1/Fs;Tp=N*T;%采样频率Fs=10kHz,Tp为采样时间
t=0:
T:
(N-1)*T;k=0:
N-1;f=k/Tp;
fc1=Fs/10;%第1路调幅信号载波频率fc1=1000Hz
fm1=fc1/10;%第1路调幅信号的调制信号频率fm1=100Hz
fc2=Fs/20;%第2路调幅信号载波频率fc2=500Hz
fm2=fc2/10;%第2路调幅信号的调制信号频率fm2=50Hz
fc3=Fs/40;%第3路调幅信号载波频率fc3=250Hz
fm3=fc3/10;%第3路调幅信号的调制信号频率fm3=25Hz
xt1=cos(2*pi*fm1*t).*cos(2*pi*fc1*t);%产生第1路调幅信号
xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t);%产生第2路调幅信号
xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t);%产生第3路调幅信号
st=xt1+xt2+xt3;%三路信号相加,得到复合信号
fxt=fft(st,N);%计算信号st的频谱
%以下为绘图命令
figure
(1)
subplot(4,2,1);
plot(t,st);grid;xlabel('t/s');ylabel('s(t)');
axis([0,Tp,min(st),max(st)]);title('(a)s(t)的波形')
figure
(1)
subplot(4,2,2);
stem(f,abs(fxt)/max(abs(fxt)),'.');grid;title('(b)s(t)的频谱')
axis([0,Fs/8,0,1.2]);
xlabel('f/Hz');ylabel('幅度');
%低通滤波器
fp=300;fs=320;
wp=2*fp/Fs;ws=2*fs/Fs;rp=0.1;rs=60;%DF指标(低通滤波器的通、阻带边界频)
[N,wp]=ellipord(wp,ws,rp,rs);%调用ellipord计算椭圆DF阶数N和通带截止频率wp
[B,A]=ellip(N,rp,rs,wp);%调用ellip计算椭圆带通DF系统函数系数向量B和A
y1t=filter(B,A,st);%滤波器软件实现
y1=fft(y1t);
%绘图部分
figure
(2)
subplot(311)
[H,W]=freqz(B,A,800);
plot(W*Fs/2/pi,abs(H));
xlabel('Hz');
ylabel('H(w)');
title('低通滤波器');
axis([0,2000,0,1.2]);
grid;
figure
(1)
subplot(4,2,3);
plot(t,y1t);
xlabel('t');
ylabel('y(t)');
title('分离出的250Hz的波形');
figure
(1)
subplot(4,2,4);
stem(f,abs(y1)/max(abs(y1)),'.');
xlabel('Hz');
ylabel('|H|');
title('250Hz的频谱');
axis([0,1200,0,1]);
grid;
%带通滤波器
fpl=400;fpu=580;fsl=300;fsu=700;
wp=[2*fpl/Fs,2*fpu/Fs];ws=[2*fsl/Fs,2*fsu/Fs];rp=0.1;rs=60;
[N,wp]=ellipord(wp,ws,rp,rs);%调用ellipord计算椭圆DF阶数N和通带截止频率wp
[B,A]=ellip(N,rp,rs,wp);%调用ellip计算椭圆带通DF系统函数系数向量B和A
y2t=filter(B,A,st);%滤波器软件实现
y2=fft(y2t);
%绘图部分
figure
(2)
subplot(312)
[H,W]=freqz(B,A,800);
plot(W*Fs/2/pi,abs(H));
xlabel('Hz');
ylabel('H(w)');
title('带通滤波器');
axis([0,2000,0,1.2]);
grid;
figure
(1)
subplot(4,2,5);
plot(t,y2t);
xlabel('t');
ylabel('y(t)');
title('分离出的500Hz的波形');
figure
(1)
subplot(4,2,6);
stem(f,abs(y2)/max(abs(y2)),'.');
xlabel('Hz');
ylabel('|H|');
title('频谱');
axis([0,1200,0,1]);
grid;
%高通滤波器
fp=800;fs=780;
wp=2*fp/Fs;ws=2*fs/Fs;rp=0.1;rs=60;%DF指标(低通滤波器的通、阻带边界频)
[N,wp]=ellipord(wp,ws,rp,rs);%调用ellipord计算椭圆DF阶数N和通带截止频率wp
[B,A]=ellip(N,rp,rs,wp,'high');%调用ellip计算椭圆带通DF系统函数系数向量B和A
y3t=filter(B,A,st);%滤波器软件实现
y3=fft(y3t);
%绘图部分
figure
(2)
subplot(313)
[H,W]=freqz(B,A,800);
plot(W*Fs/2/pi,abs(H));
xlabel('Hz');
ylabel('H(w)');
title('高通滤波器');
axis([0,2000,0,1.2]);
grid;
figure
(1)
subplot(4,2,7);
plot(t,y3t);
xlabel('t');
ylabel('y(t)');
title('分离出的1000Hz的波形');
figure
(1)
subplot(4,2,8);
stem(f,abs(y3)/max(abs(y3)),'.');
xlabel('Hz');
ylabel('|H|');
title('频谱');
axis([0,1200,0,1]);grid;
【四】设计结果
设计三语音信号滤波处理
【一】设计要求
1利用Windows下的录音机录制一段自己的话音,时间在1s内。
然后在Matlab软件平台下,利用wavread函数对语音信号进行采样,记住采样频率和采样点数;
2画出语音信号的时域波形,对采样后的语音信号进行快速傅立叶变换,得到信号的频谱特性,画出采样信号的时域波形和频谱图;
3根据对语音信号谱分析的结果,确定滤除噪声所需滤波器的技术指标,设计合适的数字滤波器,并画出滤波器的频域响应;
4用所设计的滤波器对采集的信号进行滤波,在同一个窗口画出滤波前后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;
5回放语音信号;sound(x)
6为使编制的程序操作方便,设计一个信号处理用户界面。
在所设计的系统界面上可以选择滤波器的类型,输入滤波器的参数,显示滤波器的频率响应,选择信号等。
【二】设计原理
【三】源程序清单
Fs=20000;%采样频率
[x,Fs]=wavread('m1.wav');
figure
(1)
subplot(2,2,1)
plot(x,'r');%做原始语音信号的时域图形
title('原语音信号');gridon;
%sound(x,Fs);
subplot(2,2,2)
plot(abs(fft(x)));%画出原始语音信号的频谱图
title('原语音信号的频谱');gridon;
y=rand(size(x))/5;
y=x+y;
subplot(2,2,3);
plot(y);%做噪声语音信号的时域图形
title('加噪后语音信号');
xlabel('时间n');ylabel('音量n');
%sound(y,Fs);
subplot(2,2,4);
y5=fft(y,length(y));%做length(y)点的FFT
plot(abs(y5));%画出噪声语音信号的频谱图
title('加噪后语音信号的频谱');gridon;
fs=20000;
fc2=5000;
wc2=2*pi*fc2/fs;
wp2=2*pi*4800/fs;ws2=2*pi*5000/fs;
N2=ceil(6.6*pi/(ws2-wp2))+1;%确定窗的长度
Window=(hamming(N2));
b2=fir1(N2-1,1/pi,0,Window);%利用窗函数法设计FIR滤波器
[H,W]=freqz(b2,1,512);%数字滤波器频率响应
H_db=20*log10(abs(H));
figure
(2);
subplot(3,1,1)
plot(W,H_db);
title('低通滤波器');gridon;
y_high=filter(b2,1,y);%对信号进行高通滤波
subplot(3,1,2)
plot(y_high);title('信号经过低通滤波器(时域)');
subplot(3,1,3)
plot(abs(fft(y_high)));
title('信号经过低通滤波器(频域)');gridon;
sound(y_high,Fs);
【四】设计结果
【五】结果分析
【六】收获、体会和建议
【七】参考资料