MATLAB实验二傅里叶分析及应用.docx
《MATLAB实验二傅里叶分析及应用.docx》由会员分享,可在线阅读,更多相关《MATLAB实验二傅里叶分析及应用.docx(21页珍藏版)》请在冰豆网上搜索。
MATLAB实验二傅里叶分析及应用
实验二傅里叶分析及应用
、实验目的
(一)掌握使用Matlab进行周期信号傅里叶级数展开和频谱分析
1、学会使用Matlab分析傅里叶级数展开,深入理解傅里叶级数的物理含义
2、学会使用Matlab分析周期信号的频谱特性
二)掌握使用Matlab求解信号的傅里叶变换并分析傅里叶变换的性质
1、学会运用Matlab求连续时间信号的傅里叶变换
2、学会运用Matlab求连续时间信号的频谱图
3、学会运用Matlab分析连续时间信号的傅里叶变换的性质
三)掌握使用Matlab完成信号抽样并验证抽样定理
1、学会运用MATLAB完成信号抽样以及对抽样信号的频谱进行分析
2、学会运用MATLAB改变抽样时间间隔,观察抽样后信号的频谱变化
3、学会运用MATLAB对抽样后的信号进行重建
、实验条件
Win7系统,MATLABR2015a
三、实验内容
1、分别利用Matlab符号运算求解法和数值计算法求下图所示信号的FT,并画出其频谱图(包括幅度谱和相位谱)[注:
图中时间单位为:
毫秒(ms)]。
Code:
ft=sym('
(t+2)*(heaviside(t+2)-heaviside(t+1))+(heaviside(t+1)-heaviside(t-1))+(2-t)*(heaviside(t-1)-heaviside(t-2))');fw=simplify(fourier(ft));
subplot(2,1,1);ezplot(abs(fw));gridon;title('ampspectrum');phi=atan(imag(fw)/real(fw));
subplot(2,1,2);
ezplot(phi);gridon;
符号运算法
数值运算法
title('phasespectrum');
2、试用Matlab命令求F(j)10-4的傅里叶反变换,并绘出其时域信号图
3j5j
两个单边指数脉冲的叠加
Code:
f=sym('heaviside(t+1)-heaviside(t-1)');fw=simplify(fourier(f));
F=fw.*fw;subplot(211);ezplot(abs(F),[-9,9]),gridon
title('FW^2')
tri=
sym('(t+2)*heaviside(t+2)-2*t*heaviside(t)+(t-2)*heaviside(t-2)');Ftri=fourier(tri);
F=simplify(Ftri);subplot(212);ezplot(abs(F),[-9,9]),gridon;
title('triFT')
4、设有两个不同频率的余弦信号,频率分别为f1100Hz,f23800Hz;现在使用抽样频率fs4000Hz对这三个信号进行抽样,使用MATLAB命令画出各抽样信号的波形和频谱,并分析其频率混叠现象
Code:
>
t2=-0.007:
ts:
0.007;fst=cos(2*f1*pi*t2);
f1=100;%f1=100hz
>
subplot(223);plot(t1,ft,':
'),
ts=1/4000;%sample=4000hz
holdon
dt=0.0001;
>
stem(t2,fst),gridon;
t1=-0.007:
dt:
0.007;
axis([-0.0060.006-1.51.5])
ft=cos(2*f1*pi*t1);
>
xlabel('Time/s'),ylabel('fs(t)')
subplot(221);plot(t1,ft),gridon;
title('Samplesignal');holdoff
axis([-0.0060.006-1.51.5])
>
xlabel('Time/s'),ylabel('f(t)')
fsw=ts*fst*exp(-1i*t2'*w);
title('Cosinecurve');
>
subplot(224);plot(w,abs(fsw)),
gridon
N=5000;k=-N:
N;
>
axis([-200002000000.006])
w=2*pi*k/((2*N+1)*dt);
xlabel('\omega'),ylabel('fsw')
fw=ft*dt*exp(-1i*t1'*w);
>
title('Samplefreqspectrum');
subplot(222);
plot(w,abs(fw));gridon;
>
axis([-200002000000.005]);
xlabel('\omega'),ylabel('f(w)')
>
title('Cosfreqspectrum');
4
Cosinecurve
Time/s
-3
x10
4
3
2
1
10
-3
x10Samplefreqspectrum
-3
x10Cosfreqspectrum
0
-2
Samplesignal
Time/s
-3
x10
wfs
f1=100Hz
将代码中f1设为3800即可↓
Cosinecurve
x10
)
4
3
2
1
4
0-2
-3
x10Cosfreqspectrum
Samplesignal
x10
x
10
x10
f2=3800Hz
5、结合抽样定理,利用MATLAB编程实现Sa(t)信号经过冲激脉冲抽样后得到的抽样
信号fst及其频谱[建议:
冲激脉冲的周期分别取4*pi/3s、pis、2*pi/3s三种情况对比],
并利用fst构建Sa(t)信号
**改动第一行代码即可)
t2=-5:
Ts:
5;fst=sinc(t2);subplot(2,2,3)plot(t1,ft,':
'),holdonstem(t2,fst),gridonaxis([-66-0.51.2])title('Samplingsignal')Fsw=Ts*fst*exp(-1i*t2'*W);
subplot(2,2,4)plot(W,abs(Fsw)),gridon
axis([-5050-0.051.5])title('spectrumofSamplingsignal')
Sa(t)
Sa(t)freqspectrum
Samplingsignal
spectrumofSamplingsignal
冲激脉冲的周期
=4*pi/3s
Sa(t)freqspectrum
1
0.5
0-20020
Samplingsignal
spectrumofSamplingsignal
冲激脉冲的周期=pis
Sa(t)
Sa(t)freqspectrum
Samplingsignal
spectrumofSamplingsignal
冲激脉冲的周期=2*pi/3s
1)试求出该信号的傅里叶级数[自己求或参见课本P112或P394],利用Matlab编程
实现其各次谐波[如1、3、5、13、49]的叠加,并验证其收敛性;
1
a0=2
nπ2sin2(n2π);bn=0
谐波幅度收敛速度
1
n2
原始波形:
1classH-wave
3classH-wave
Originalwave
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
-4
-2
0
-2
0
2
0
-4
1
0.8
0.6
0.4
0.2
0
13classH-wave
49classH-wave
1
0.8
0.6
0.4
0.2
第k阶谐波波形
The1timessuperpose
1
0.8
0.6
0.4
The13timessuperpose
0.2
0
-4
-2
The3timessuperpose
0.8
0.6
0.4
0.2
-2
2
0
-4
The49timessuperpose
0.8
0.6
0.4
0.2
-2
0
-4
前K次谐波的叠加
Code:
figure
(1);
t=-2*pi:
0.001:
2*pi;
f=abs(sawtooth(0.5*pi*t,0.5));plot(t,f),gridon;axis([-4,4,-1,2])title('Originalwave');
nclass=[1,3,13,49];figure
(2);
N=4;
a0=1/2;
fork=1:
N
n=nclass(k);
an=4./((n*pi).^2);
ft=an*cos(pi*n'*t);
ft=ft+a0;
subplot(2,2,k);plot(t,ft);axis([-4,4,0,1])title([num2str(nclass(k)),classH-wave']);end
figure(3);
N=4;a0=1/2;
fork=1:
N
n=1:
2:
nclass(k);
an=4./((n*pi).^2);
ft=an*cos(pi*n'*t);
ft=ft+a0;
subplot(2,2,k);plot(t,ft);axis([-4,4,0,1])title(['The
',num2str(nclass(k)),'timessuperpose']);
end
周期为2ms
(2)用Matlab分析该周期三角信号的频谱[三角形式或指数形式均可]。
当周期三角信号的周期(如由2ms1ms或由2ms4ms)和宽度(如2ms1ms)分别变化时,试观察分析其频谱的变化。
dt=0.01;
t=-4:
dt:
4;
ft=(t>=-1&t<0).*(t+1)+(t>0&t
<=1).*(1-t);
%subplot(2,1,1)
%plot(t,ft);gridonn=2000;
k=-n:
n;
w=pi*k/(n*dt);
f=dt*ft*exp(-i*t'*w);f=abs(f);
%subplot(2,1,2)
plot(w,f);
axis([-202001.1]),gridon;
dt=0.01;
t=-4:
dt:
4;
ft=(t>=-0.5&t<0).*(t+1)+(t>0
&t<=0.5).*(1-t);
%subplot(2,1,1)
%plot(t,ft);gridonn=2000;
k=-n:
n;
w=pi*k/(n*dt);
f=dt*ft*exp(-i*t'*w);f=abs(f);
%subplot(2,1,2)
plot(w,f);
axis([-202001.1]),gridon;
周期为1ms
四、实验结论和讨论
1、凡是等步长离散采样一定会产生频率混叠现象。
根据采样定理,当采样频率fs.max大于信号中最高频率fmax的2倍时(fs.max>2fmax),采样之后的数字信号才能完整保留原始信号中的信息。
第四题中,f=3800hz时,采样频率4000hz明显小于f,故发生了混叠。
2、谐波叠加实验:
可以看出随着波次的叠加,波形越来越趋近于原始波形,正体现了傅里叶级数对原函数的还原。
五、实验思考
1、MATLAB原意是矩阵实验室,里面各种运算都是矩阵化的。
所以在进行一些变量相乘的时候,要进行转置,比如单引号和点乘。
2、第二题傅里叶逆变换,我对照了wolframalpha的结果,不太一样后发现MATLAB的逆变换是没有归一化处理的,而wolframalpha针对的是离散傅里叶变换,默认加了1/sqrt(2pi)归一化因子。
3、第四题抽样那,频率变为3800hz后,图形应该也跟着放大才好看,但是放大有点失真,故还是选择了原来的比例。