信号频域分析研究性学习报告 1文档格式.docx
《信号频域分析研究性学习报告 1文档格式.docx》由会员分享,可在线阅读,更多相关《信号频域分析研究性学习报告 1文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
也可以利用MATLAB提供的函数fft计算。
【题目分析】:
对声音信号的采集以及对该信号进行时域和频域的分析
【仿真程序】
[Y,FS,NBITS,OPTS]=WAVREAD('
F:
\boy.wav'
);
X=length(Y);
T=10;
k1=T/(X-1);
k2=0:
X-1;
k=0:
k1:
T;
subplot(2,2,1);
plot(k,Y)
title('
男声,时域'
FY=fft(Y,X);
omega=2*pi/X*k2;
subplot(2,2,2);
plot(omega,abs(FY));
男声,频域'
)
wavplay(Y,FS)
\girl.wav'
subplot(2,2,3);
女生,时域'
subplot(2,2,4);
女生,频域'
【仿真结果】
【阅读文献】
1、《信号与系统》陈后金胡建薛健编著
2、杜晶晶信号与系统实训指导M西安电子科技大学
【发现问题】(专题研讨或相关知识点学习中发现的问题):
现在要处理一段基波频率变化范围在45~65Hz的信号,但采样频率只能固定为2.4KHz,不能跟随信号作同步采样。
该如何对该信号进行频谱分析?
【问题探究】
1、单周期信号的DFT。
对基波一个周期内的采样点数据进行DFT分析,但这样会多一个分点;
采取最后一个分点修正的措施,对于基波的幅值结果还可以,但对于谐波以及相位结果,结果就很差了。
并且这种修正方法我至今都没有找到理论根据。
2、FFT时域加窗频域插值,这种方法讨论得比较多。
但它得频率变化范围太有限。
根本不能满足45~65Hz这样的一个变化范围。
3、采样数据插值。
这种方法就是把采样数据重新抽样,人为地作到同步采样,但这种方法比较烦琐,同时精度也有限。
4、上面三种方法实在不行的话,那就只能采用同步采样了,先计算频率,然后再同步采样。
2.信号的抽样
频率为f0Hz的正弦信号可表示为
按抽样频率fsam=1/T对x(t)抽样可得离散正弦序列x[k]
在下面的实验中,取抽样频率fsam=8kHz。
(1)对频率为2kHz,2.2kHz,2.4kHz和2.6kHz正弦信号抽样1秒钟,利用MATLAB函数sound(x,fsam)播放这四个不同频率的正弦信号。
(2)对频率为5.4kHz,5.6kHz,5.8kHz和6.0kHz正弦信号抽样1秒钟,利用MATLAB函数sound(x,fsam)播放这四个不同频率的正弦信号。
(3)比较
(1)和
(2)的实验结果,解释所出现的现象。
【题目分析】
(1)正弦信号是一种机械波的模拟,是由振动产生的,因此,可以通过sound函数播放出声音。
(2)要想做到抽样1秒钟,就必须注意k的取值范围,即k的取值范围为0~8000。
(3)用stem函数画出抽样后离散的点。
【比较研究】
利用系统的Help,阅读函数sound和wavplay的使用方法。
连续播放两段音频信号,比较函数sound和wavplay的异同。
1:
8000;
f0=input('
f0='
fs=8000;
x=sin(2*pi*f0/fs*k);
sound(x,fs);
subplot(211)
stem(k,x)
axis([020-11])
subplot(212)
plot(k,x)
2KHz
2.2KHz
2.4KHz
2.6KHz
现象:
随着声音频率的变大,声音在逐渐变得尖细且高。
5.4KHz
5.6KHz
5.8KHz
随着声音频率的变大,声音逐渐变得粗犷且低沉
【结果的理论分析和解释】
频率同在增大,产生两个不同的现象,是因为离散时域信号的频域是以2
为周期的,在抽样频率较小时,在频域上会出现频域的非零值叠加(即混叠),此时随着抽样频率的增加,叠加部分减少,并且使频谱向
的奇数倍移动,高频分量增加,声音变得尖一些;
而在抽样频率接近信号的频率时,由于频谱的周期性,此时频谱是会随着抽样频率的增加向
的偶数倍方向移动,高频分量减少,声音变得低沉。
只有符合时域抽样定理的抽样,才不会发生混叠,即抽样的最小频率为2fm。
【自主学习内容】
(1)Input函数、sound函数、stem函数的用法。
(2)奈奎斯特抽样定理在MATLAB仿真中的应用。
(3)MATLAB中对信号进行傅里叶变换的函数fft的用法。
(1)《信号与系统》陈后金胡建薛健编著
(2)《MATLAB处理音频信号》
3.连续时间信号Fourier变换的数值近似计算
计算连续信号频谱是对信号和系统进行频域分析的基础,由于实际信号大多无简单的解析表达式,所以要用数值方法进行近似计算。
本题要求对频谱近似计算中误差的原因进行初步的分析,希望能在计算实际信号频谱的近似计算中起一定的指导作用。
若信号x(t)的非零值在
区间,则可用下面提供的函数ctft1或ctft2近似计算其频谱。
函数ctft的调用形式为
[X,f]=ctft1(x,fsam,N)
[X,f]=ctft2(x,fsam,N)
其中调用变量x存放信号x(t)的抽样值,fsam表示对连续信号x(t)的抽样频率(Hz),N表示用DFT进行近似计算时DFT的点数,为了能高效的进行计算,N最好取2的整数次幂,如512,1024等。
返回变量X是计算出的信号频谱的抽样值,f(单位Hz)表示对应的频率抽样点。
返回变量X一般是复数,可用函数abs(X)计算出幅度谱,函数angle(X)计算出相位谱。
(1)阅读程序ctft2,叙述该程序的基本原理。
该程序中有一处需要产生一个大的2维矩阵,指出该行程序,并评价该方法的优缺点。
(2)取抽样频率fsam=100Hz,信号抽样长度N=1024,分别用两个子程序近似计算信号
的频谱,比较两种方法的计算时间和误差;
(可用tic,toc计算程序运行时间)
(3)若将信号的时域有效宽度
定义为
其中
表示信号在时域的最大值。
试分析时域有效宽度
对近似计算的影响。
给出一个由信号时域有效宽度
估计近似计算中所需信号长度
的经验公式。
(4)定义信号频域有效宽度
为
表示信号在频域的最大值。
给出一个由信号频域有效宽度
估计近似计算中所需抽样频率
(5)用计算机录分别一段男生和女生的语音信号,计算其频谱并比较其特点。
(6)讨论:
计算误差产生的主要原因?
如果不知信号的解析表达式,如何分析计算误差?
%近似计算连续信号频谱的函数
function[X,f]=ctft1(x,Fs,N)
X=fftshift(fft(x,N))/Fs;
f=-Fs/2+(0:
N-1)*Fs/N;
function[X,f]=ctft2(x,Fs,N)
tk=(0:
N-1)/Fs;
%时域抽样点
dF=Fs/N;
%频域抽样间隔
fm=(0:
N/2)*dF;
%频域抽样点
X=x*exp(-j*2*pi*tk'
*fm)/Fs;
%近似计算信号频谱
f=[-fliplr(fm(2:
end))fm];
%增添负频率点
X=[-conj(fliplr(X(2:
end)))X];
%增添频率点对应的频谱
对连续时间函数的近似傅里叶变换。
先要定义ctft函数,然后调用。
(2)ctft1.m
Untiled2.m
0.01:
15;
x=exp(-1*k);
[X,f]=ctft1(x,100,1024);
figure
(1);
subplot(2,1,1);
plot(f,abs(X));
abs(X)'
subplot(2,1,2);
plot(f,angle(X));
angle(X)'
P=1./(1+j*f);
Untiled3.m
plot(f,abs(P));
xlabel('
f(Hz)'
plot(f,angle(P));
figure(3);
plot(f,abs(P)-abs(X));
幅度误差'
axis([-5,5,-0.01,0.02])
plot(f,angle(P)-angle(X));
相位误差'
(4)x(t)频域有效宽度为
约为1.58,
为175HZ,
,所以两者之间的经验公式为:
(5)
男声
[x1,fs,bits]=wavread('
\man.wav'
[X,f]=ctft1(x1,100,1024);
subplot(3,1,1);
幅度'
subplot(3,1,2);
相位'
subplot(3,1,3);
plot(f,X);
频谱'
女声
\woman.wav'
(6)运用ctft近似计算信号频谱时,是以一定的抽样频率对原信号进行了抽取,信号由连续信号变成离散信号,如果抽样频率不合适就会造成信号混叠而失真。
在不知道信号表达式