数字信号处理实验课程设计.docx

上传人:b****7 文档编号:16549236 上传时间:2023-07-14 格式:DOCX 页数:14 大小:105.60KB
下载 相关 举报
数字信号处理实验课程设计.docx_第1页
第1页 / 共14页
数字信号处理实验课程设计.docx_第2页
第2页 / 共14页
数字信号处理实验课程设计.docx_第3页
第3页 / 共14页
数字信号处理实验课程设计.docx_第4页
第4页 / 共14页
数字信号处理实验课程设计.docx_第5页
第5页 / 共14页
数字信号处理实验课程设计.docx_第6页
第6页 / 共14页
数字信号处理实验课程设计.docx_第7页
第7页 / 共14页
数字信号处理实验课程设计.docx_第8页
第8页 / 共14页
数字信号处理实验课程设计.docx_第9页
第9页 / 共14页
数字信号处理实验课程设计.docx_第10页
第10页 / 共14页
数字信号处理实验课程设计.docx_第11页
第11页 / 共14页
数字信号处理实验课程设计.docx_第12页
第12页 / 共14页
数字信号处理实验课程设计.docx_第13页
第13页 / 共14页
数字信号处理实验课程设计.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数字信号处理实验课程设计.docx

《数字信号处理实验课程设计.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验课程设计.docx(14页珍藏版)》请在冰点文库上搜索。

数字信号处理实验课程设计.docx

数字信号处理实验课程设计

题目二、任意确定信号的频谱分析

分析:

信号在时域的离散化导致其频谱函数的周期化;信号在时域的周期化导致其频谱函数的离散化。

连续信号离散化过程中国的频谱混叠主要有两种方法:

对于带限连续信号,只要提高抽样频率使之满足时域抽样定理;对于非带限连续信号,可根据实际情况对其进行低通滤波,使之称为带限信号。

通过补0可以提高信号频谱的显示分辨率。

频谱混叠与连续信号的时域抽样间隔有关,频率泄漏与信号的时域加窗截短的长度有关,栅栏现象与DFT的点数有关,、、。

1.利用FFT分析有限长序列

的频谱,并绘出其幅度谱与相位谱。

程序:

P=256;

omega=[0:

P-1]*2*pi/P;

X=2+3*exp(-j*omega)+3*exp(-2*j*omega)+exp(-3*j*omega)+5*exp(-5*j*omega);

subplot(2,1,1);

plot(omega./pi,abs(fftshift(X)));

xlabel('以pi为单位的频率');

title('幅度谱');

ylabel('幅度');

subplot(2,1,2);

plot(omega./pi,angle(X));

xlabel('以pi为单位的频率');

title('相位谱');ylabel('弧度');

2.利用FFT分析无限长非周期序列

的频谱。

分析步骤为:

(1)确定序列的长度

及窗函数的类型(序列为无限长时,需要根据能量分布进行截短)。

(2)确定作FFT的点数

;根据频域取样定理,为使时域波形不产生混叠,必须

(3)使用fft函数作

点FFT计算

,并绘出其幅度谱与相位谱。

(4)进行理论值与计算值比较,讨论信号频谱分析过程中误差原因及改善方法。

程序:

信号无限长,因此需要对其进行截短。

该序列单调衰减,当k>=30时,序列已几乎衰减为0,因此只取序列在区间[0,30]上的数值进行分析。

k=0:

30;

x=(1/3).^k;

X=fftshift(fft(x,256));

subplot(2,1,1);

plot(abs(X));%画出序列频谱的幅度谱

title('幅度谱');ylabel('幅度');

subplot(2,1,2);

plot(angle(X));

title('相位谱');ylabel('弧度');

理论值:

3.利用FFT分析周期序列

的频谱,并绘出其幅度谱与相位谱。

分析步骤为:

(1)确定DFT计算的参数,即周期序列的基本周期N;

(2)利用fft函数求其一个周期的DFT;并绘出其离散幅频图和相频图。

若DFT的长度和周期N不等,结果如何?

试一试。

(3)进行理论值与计算值比较,讨论信号频谱分析过程中误差原因及改善方法。

程序:

该周期序列的周期N=32,基频Ω0=π/16。

N=32;n=0:

N-1;

x=cos(7*pi/16*n)+0.5*cos(9*pi/16*n)+0.75*cos(pi/2*n);

X=fft(x,N);

subplot(2,1,1);

stem(n-N/2,abs(fftshift(X)));

title('幅度谱');

ylabel('幅度');xlabel('n');

subplot(2,1,2);

stem(n-N/2,angle(fftshift(X)));

title('相位谱');

ylabel('相位');xlabel('n');

ylabel('相位');xlabel('n');

N与周期不同:

N=64;n=0:

N-1;

x=cos(7*pi/16*n)+0.5*cos(9*pi/16*n)+0.75*cos(pi/2*n);

X=fft(x,N);

subplot(2,1,1);

stem(n-N/2,abs(fftshift(X)));

title('幅度谱');

ylabel('幅度');xlabel('n');

subplot(2,1,2);

stem(n-N/2,angle(fftshift(X)));

title('相位谱');

ylabel('相位');xlabel('n');

ylabel('相位');xlabel('n');

4.利用FFT分析连续信号

的频谱,并绘出其幅度谱与相位谱。

分析步骤为:

(1)确定DFT计算的各参数(抽样间隔,截短长度,频谱分辨率等),计算DFT。

(a)根据时域抽样定理,确定时域抽样间隔

,得到离散序列

(b)确定信号截短的长度

及窗函数的类型,得到

点长序列

(c)确定频域抽样点数

,要求

(d)利用FFT函数进行N点FFT计算得到N点的

(e)由

可得连续信号频谱

样点的近似值

(2)比较理论值(即傅里叶变换

)与计算值,分析误差原因,提出改善误差的措施并重做

(1),使误差减小。

程序:

fsam=100;Tp=6;

N=256;T=1/fsam;

t=0:

T:

Tp;

x=exp(-2*t);

X=T*fft(x,N);

w=(-N/2:

N/2-1)*(2*pi/N)*fsam;

y=1./(j*w+2);

subplot(2,1,1);

plot(w,abs(fftshift(X)),w,abs(y),'r-.');

title('幅度谱');xlabel('w');

axis([-10,10,0,1.4]);

subplot(2,1,2);

plot(angle(fftshift(X)));

xlabel('w');title('相位谱');

plot(w,fftshift(X)-y);

axis([-10,10,0,0.01]);

可能会产生频谱混叠(增大抽样频率),频率泄漏(换窗函数就能减弱),栅栏等现象(增加DFT的点数就能有效解决)导致误差。

随着抽样频率的提高,有DFT近似计算出的连续信号频谱的误差逐渐减小。

5.假设实际测得的一段信号的长度为0.4s,表达式为

,其中

自定。

试确定一合适抽样频率

,利用FFT分析该信号的频谱。

在信号截短时要求:

(1)使用Hamming窗,由实验确定能够分辨最小谱峰间隔

和信号长度

的关系。

(2)采用不同参数的Kaiser窗,确定能够分辨最小谱峰间隔

和信号长度

的关系。

连续周期信号频谱分析步骤为:

(1)确定周期信号的基本周期

(2)计算一个周期内的抽样点数

若周期信号的最高次谐频为p次谐波

,则频谱中有2p+1根谱线;若周期信号的频谱无限宽,则认为集中信号90%以上(或根据工程允许而定)能量的前(p+1)次谐波为近似的频谱范围,其余谐波忽略不计。

所以一般取

(3)对连续周期信号以抽样间隔

进行抽样,得到

(4)利用FFT函数对

作N点FFT运算,得到

(5)最后求得连续周期信号的频谱为

程序:

信号基频ω=

,信号周期T=1s;

f1=8Hz,f2=9Hz;

最高次谐频为9次谐波,则一般取N≥2*9+1=19,取N=32;

抽样间隔

T0=1;N=32;

T=T0/N;

t=0:

T:

T0;

x=cos(2*pi*100*t)+0.75*cos(2*pi*150*t);

Xm=fft(x,N)/N;

stem(abs(fftshift(Xm)));

xlabel('f(Hz)');

ylabel('幅度');

title('幅度谱');

题目一、韵母"a"的频谱分析

1、利用Windows下的录音机,录制3秒左右自己的声音,发音为汉语韵母"a"(在Matlab软件平台下,利用函数wavread对其进行采样,记住采样频率和采样点数。

通过wavread函数的使用,要求理解掌握采样频率、采样位数等概念)。

设抽样率为8000Hz/s。

2、取8000个数据进行频谱分析(在Matlab中,函数fft可以对离散信号进行频谱分析,并用函数fftshift将fft计算输出的零频移到输出的中心位置),得到幅度和相位谱。

3、取16000个数据进行频谱分析,得到幅度和相位谱。

比较二者异同并分析原因。

4、针对电话信道(最高3500Hz),对所有数据进行插值和抽取处理,把抽样率转变为7000Hz/s,并进行频谱分析,得到幅度和相位谱。

5、再把处理后的所有数据储存为声音文件,与原始声音进行比较(在Matlab中,函数sound可以对声音进行回放,其调用格式:

sound(x,fs,bits))。

程序:

1、

[x,fs,bits]=wavread('E:

\ringout.wav');

sound(x,fs,bits);%回放该音频

得到:

fs=22500Hz

bits=8

2、

X=resample(x,8000);

Y=fftshift(fft(X));%进行傅立叶变换

subplot(2,2,1);

plot(X);

title('声音信号的波形');

subplot(2,2,2);

plot(abs(Y));

title('声音信号的频谱');

axis([0,10000,0,300]);

subplot(2,2,3);

plot(angle(Y));

title('声音信号的相位谱');

axis([0,10000,-4,4]);

3、

X=esample(x,16000);

Y=fftshift(fft(X));%进行傅立叶变换

subplot(2,2,1);

plot(X);

title('声音信号的波形');

subplot(2,2,2);

plot(abs(Y));

title('声音信号的频谱');

axis([0,20000,0,300]);

subplot(2,2,3);

plot(angle(Y));

title('声音信号的相位谱');

axis([0,20000,-4,4]);

4、

[x,fs,bits]=wavread('E:

\ringout.wav');

sound(y,7000,bits);

y=interpft(x,81250*7000/22500);

Y=fftshift(fft(y));

subplot(2,2,1);

plot(x);

subplot(2,2,2);

plot(y);

subplot(2,2,3);

plot(abs(Y));

subplot(2,2,4);

plot(angle(Y));

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 信息与通信

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2