信号频域分析.docx
《信号频域分析.docx》由会员分享,可在线阅读,更多相关《信号频域分析.docx(20页珍藏版)》请在冰豆网上搜索。
信号频域分析
专题研讨二、信号与系统的频域分析
研讨题目:
1.分析男女生信号的频谱
(1)采集wav格式的男女生语音信号。
(2)对所采集的语音信号进行频谱分析。
提示:
可以根据傅里叶变换公式,利用数值积分计算;也可以利用MATLAB提供的函数fft计算。
题目分析:
对声音信号的采集时域和频域分析
仿真程序:
[Y,FS,NBITS,OPTS]=WAVREAD('C:
\Users\n\Desktop\woman.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('Thevoiceofwoman,times');
FY=fft(Y,X);
omega=2*pi/X*k2;
subplot(2,2,2);
plot(omega,abs(FY));
title('Thevoiceofwoman,omega')
wavplay(Y,FS)
[Y,FS,NBITS,OPTS]=WAVREAD('C:
\Users\n\Desktop\man.wav');
X=length(Y);
T=10;
k1=T/(X-1);
k2=0:
X-1;
k=0:
k1:
T;
subplot(2,2,3);
plot(k,Y)
title('Thevoiceofman,times')
FY=fft(Y,X);
omega=2*pi/X*k2;
subplot(2,2,4);
plot(omega,abs(FY));
title('Thevoiceofman,omega')
wavplay(Y,FS)
仿真结果:
结果分析:
女生的声音频谱明显要高于男生
自主学习内容:
声音的采集及频谱分析。
阅读文献:
[1]承江红信号与心痛仿真及实验指导北京理工大学2009
发现问题(专题研讨或相关知识点学习中发现的问题):
问题探究:
研讨题目:
2.抽样引起的混叠
频率为f0Hz的正弦信号可表示为
按抽样频率fs=1/Ts对x(t)抽样可得离散正弦序列x[k]
在下面的实验中,抽样频率fs=8kHz。
(1)对频率为2kHz,2.2kHz,2.4kHz和2.6kHz正弦信号抽样1秒钟,利用MATLAB函数sound(x,fs)播放这四个不同频率的正弦信号。
(2)对频率为7.2kHz,7.4kHz,7.6kHz和7.8kHz正弦信号抽样1秒钟,利用MATLAB函数sound(x,fs)播放这四个不同频率的正弦信号。
(3)比较
(1)和
(2)的实验结果,解释所出现的现象。
题目分析:
选择合适的抽样频率才可以还原信号,小于最小抽样频率就会才生混跌。
仿真程序:
Untiled2.m
fs=8000;
t=0:
1/fs:
1;
fo=input('fo=');
x=sin(2*pi*fo*t);
sound(x,fs);
X=fft(x)
stem(X)
仿真结果:
fo=2000hz
fo=2200hz
fo=2400hz
fo=2600hz
fo=2800hz
fo=7200hz
fo=7400hz
fo=7600hz
fo=7800hz
fo=2000hz的放大图,可看到是周期的。
结果分析:
2.8k的声音在第一组中最尖,第二组是7.2k的最尖。
根据抽样定律,抽样频率应该大于等于2倍的最大频率,因为抽样频率8000大于第一组频率的两倍,所以其无失真。
8000小于第二组高频的2倍,故有失真,所以第一组不同频率中,声音的音调随着频率的增加而变高;而第二组不同频率中,声音的音调随着频率的增加而降低,这就是抽样出现的失真造成的。
自主学习内容:
我们进一步扩展了fo的范围。
在0阅读文献:
[1]陈后金.信号与系统[M].北京:
高等教育出版社,2007.
发现问题(专题研讨或相关知识点学习中发现的问题):
3.连续时间信号Fourier变换的数值近似计算
连续时间信号频谱计算是信号和系统频域分析的基础。
由于实际信号大多无简单的解析表达式,所以必须用近似的方法进行计算。
本题的目的对频谱计算中误差的原因进行初步的分析,希望能在计算实际信号频谱的近似计算中起一定的指导作用。
若信号x(t)的非零值在
,在可用我们提供的函数ctft近似计算其频谱。
函数ctft的调用形式为
[X,f]=ctft(x,Fs,N)
其中调用变量x存放信号x(t)的抽样值,Fs表示对连续信号x(t)的抽样频率(Hz),N表示用DFT进行近似计算时DFT的点数,为提高算法的计算效率,N最好取2的整数次幂,如512,1024等。
返回变量X是计算出的信号频谱,f(单位Hz)表示对应的频率点。
返回变量X一般是复数,可用函数abs(X)计算出幅度谱,函数angle(X)计算出相位谱。
(1)取Fs=50Hz,N=1024近似计算信号
的频谱,并和理论值进行比较;
(2)若将信号的时域有效宽度
定义为
试分析时域有效宽度
对近似计算的影响。
给出一个由信号时域有效宽度
估计近似计算中所需信号长度
的经验公式。
(3)定义信号频域有效宽度
为
给出一个由信号频域有效宽度
估计近似计算中所需抽样频率
的经验公式。
题目分析:
对连续时间函数的近似傅里叶变换。
先要定义ctft函数,然后调用。
仿真程序:
Untiled3.m
function[X,f]=ctft(x,Fs,N)
X=fftshift(fft(x,N))/Fs;
f=-Fs/2+(0:
N-1)*Fs/N;
untiled4.m
k=0:
1023;
x=exp(-0.01*k);
[X,f]=ctft(x,100,1024);
subplot(2,1,1);
plot(f,abs(X));
title('abs(X)');
subplot(2,1,2);
plot(f,angle(X));
title('angle(X)');
P=1./(1+j*f);
subplot(2,1,1);
plot(f,abs(P));
xlabel('f(Hz)');
subplot(2,1,2);
plot(f,angle(P));
xlabel('f(Hz)');
figure
(2);
subplot(2,1,1);
plot(f,abs(P)-abs(X));
title('·ù¶ÈÎó²î');
axis([-5,5,-0.01,0.02])
subplot(2,1,2);
plot(f,angle(P)-angle(X));
title('ÏàλÎó²î');
仿真结果:
结果分析:
从图中看出来,误差很小。
自主学习内容:
参考matlab论坛。
阅读文献:
同上。
问题探究:
第2,3小问实在是不会。
4.幅度调制和连续信号的Fourier变换
本题研究莫尔斯码的幅度调制与解调。
本题中信号的形式为
其中信号x(t)由文件ctftmod.mat定义,可用命令Loadctftmod将文件ctftmod.mat定义的变量装入系统内存。
运行命令Loadctftmod后,装入系统的变量有
afbfdashdotf1f2tx
其中
bfaf:
定义了一个连续系统H(s)的分子多项式和分母多项式。
可利用freqs(bf,af,w)求出该系统的频率响应,也可用sys=tf(bf,af)得到系统的模型,从而用lsim求出信号通过该系统的响应。
dashdot:
给出了莫尔斯码中的基本信号dash和dot的波形
f1f2:
载波频率
t:
信号x(t)的抽样点
x:
信号x(t)的在抽样点上的值
信号x(t)含有一段简单的消息。
Agend007的最后一句话是
Thefutureoftechnologyliesin···
还未说出最后一个字,Agend007就昏倒了。
你(Agend008)目前的任务就是要破解Agend007的最后一个字。
该字的信息包含在信号x(t)中。
信号x(t)具有式
(1)的形式。
式中的调制频率分别由变量f1和f2给出,信号m1(t),m2(t)和m3(t)对应于字母表中的单个字母,这个字母表已用国际莫尔斯码进行编码,如下表所示:
A·-
H···
O---
V···-
B-···
I··
P·--·
W·--
C-·-·
J·---
Q--·-
X-··-
D-··
K-·-
R·-·
Y-·--
E·
L·-··
S···
Z--··
F··-·
M--
T-
G--·
N-·
U··-
(1)字母B可用莫尔斯码表示为b=[dashdotdotdot],画出字母B莫尔斯码波形;
(2)用freqs(bf,af,w)画出系统的幅度响应;
(3)利用lsim求出信号dash通过由sys=tf(bf,af)定义的系统响应,解释你所获得的结果;
(4)用解析法推导出下列信号的Fourier变换
(5)利用(4)中的结果,设计一个从x(t)中提取信号m1(t)的方案,画出m1(t)的波形并确定其所代表的字母;
(6)对信号m2(t)和m3(t)重复(5)。
请问Agent008
Thefutureoftechnologyliesin···
题目分析:
仿真程序:
先调用函数得到ctftmod.m中的内容。
>>clear
>>loadctftmod
>>whos
NameSizeBytesClassAttributes
af1x648double
bf1x648double
dash1x200016000double
dot1x200016000double
f11x18double
f21x18double
t1x800064000double
x1x800064000double
(1)字母B可用莫尔斯码表示为b=[dashdotdotdot],画出字母B莫尔斯码波形;
>>plot(dash)
>>plot(dot)
>>b=[dashdotdotdot]
>>plot(b)
(2)用freqs(bf,af,w)画出系统的幅度响应;
>>freqs(bf,af)
(2)利用lsim求出信号dash通过由sys=tf(bf,af)定义的系统响应,解释你所获得的结果;
Untiled1.m
ydash=lsim(bf,af,dash,t(1:
length(dash)));
ydot=lsim(bf,af,dot,t(1:
length(dot)));
subplot(2,1,1);
plot(t(1:
length(dash)),dash,t(1:
length(dash)),ydash,'--');
legend('dash','ydash');
subplot(2,1,2);
plot(t(1:
length(dot)),dot,t(1:
length(dot)),ydot,'--');
legend('dot','ydash');
结果分析:
可以从图中看出,原信号和输出信号基本一致,输出信号在幅度上有所改变,在时间上有些延迟。
这说明这2个信号都是由低频分量组成的,它们的傅里叶变换的频率范围都大致位于给出的低通滤波器的通带之内。
(4)用解析法推导出下列信号的Fourier变换
F(m1(t))=0.5M1(w)+0.25[M1(w+4pif1)+M1(w-4pif1)
F(m2(t))=0.25j[M2(w+2pi(f2-f1))-M2(w-2pi(f2-f1))+M2(w+2pi(f2+f1))-M2(w-2pi(f1+f2))]
F(m3(t))=0.25j[M1(w+4pif1)+M1(w-4pif1)]
(5)利用(4)中的结果,设计一个从x(t)中提取信号m1(t)的方案,画出m1(t)的波形并确定其所代表的字母;
Untiled2.m
m1=lsim(bf,af,x.*cos(2*pi*f1*t),t);
plot(t,m1);
(6)对信号m2(t)和m3(t)重复(5)。
请问Agent008
Thefutureoftechnologyliesin···
结果分析:
d(-。
。
)s(。
。
。
)p(。
--。
)
最后的密码是DSP
阅读文献:
[1]杜晶晶信号与系统实训指导M西安电子科技大学
发现问题(专题研讨或相关知识点学习中发现的问题):