信号与系统实验三
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学院:信息学院专业:通信工程(武警国防生) 指导教师:肖琦
姓名:梁由勇学号:094 成绩:
实验目的:1.用MATLAB实现周期信号的傅利叶级数;
2.用MATLAB实现周期信号(包括典型周期信号)的频谱分析;
3.观察利用MATLAB生成的图形及结果,与信号与系统理论知识相连系,加深对信号与
系统理论知识的深入理解。
已知周期半波余弦信号和周期全波余弦信号的波形分别如图所示(图略),用MATLAB编程求出
它们的傅里叶系数,绘出其直流、一次、二次、三次、四次及五次谐波叠加后的波形图,并将
其与原周期信号的时域波形进行比较,观察周期信号的分解与合成过程。
解:
% 观察周期余弦半波信号的分解和合成
% m:傅立叶级数展开的项数
display('Please input the value of m (傅立叶级数展开的项数)');
m=input('m = ');
t=*pi::*pi;
t1=*pi::*pi;
n=round(length(t)/5);
f=[cos(t1)';zeros(n-1,1);cos(t1)';zeros(n-1,1);cos(t1)'];
y=zeros(m+1,max(size(t)));
y(m+1,:)=f';
subplot((m+2),1,1)
plot(t/pi,y(m+1,:));
grid;
axis([ ]); title('周期半波余弦信号'); xlabel('t/pi','Fontsize', 8);
x=zeros(size(t));
kk='1';
%计算系数
syms tx n
T=2*pi;
fx=sym('cos(tx)');
Nn=30;
an=zeros(m+1,1);
bn=zeros(m+1,1);
A0=2*int(fx,tx,-T/4,T/4)/T;
An=2*int(fx*cos(2*pi*(n+eps/2)*tx/T),tx,-T/4,T/4)/T;
Bn=2*int(fx*sin(2*pi*(n+eps/2)*tx/T),tx,-T/4,T/4)/T;
an(1)=double(vpa(A0,Nn)); an(2)=;
for k=2:m
an(k+1)=double(vpa(subs(An,n,k),Nn));
bn(k+1)=double(vpa(subs(Bn,n,k),Nn));
end
%计算直流分量
pause;
x=an(1)*cos(0*t)/2;
plot(t/pi,y(m+1,:));
hold on;
plot(t/pi,x);
grid;
hold off;
axis([ ]); title('直流分量');
xlabel('t/pi','Fontsize', 8);
%各次谐波叠加
for k=1:m
pause;
x=x+an(k+1).*cos(k*t);
y(k,:)=x;
subplot((m+2),1,k+1); plot(t/pi,y(m+1,:));
hold on;
plot(t/pi,y(k,:));
hold off;
grid;
axis([ ]); title(strcat('第',kk,'次谐波叠加'));
xlabel('t/pi','Fontsize', 8);
kk=strcat(kk,'、',num2str(k+1));
end
pause;
subplot((m+2),1,m+2)
plot(t/pi,y(1:m+1,:));
grid;
axis([ ]);
title('各次谐波叠加波形');
xlabel('t/pi','Fontsize', 8);
% End
% 观察周期余弦全波信号的分解和合成
% m:傅立叶级数展开的项数
display('Please input the value of m (傅立叶级数展开的项数);
t = *pi::*pi;
t1=*pi::*;
n = round(length(t)/5);
f = [cos(t1)';cos(t1)';cos(t1)';cos(t1)';cos(t1)';0];
y = zeros(m+1,max(size(t)));
y(m+1,:) = f';
subplot(m+2,1,1)
plot(t/pi,y(m+1,:));
grid on;
axis([ ]); title('周期全波余弦信号'); xlabel('t/pi','Fontsize', 8); x=zeros(size(t));
%计算系数
syms tx n
T=pi;
fx=sym('cos(tx)');
Nn=32;
an=zeros(m+1,1);
bn=zeros(m+1,1);
A0 =2*int(fx,tx,-T/2,T/2)/T;
An=2*int(fx*cos(2*pi*(n+eps/2)*tx/T),tx,-T/2,T/2)/T;
Bn=2*int(fx*sin(2*pi*(n+eps/2)*tx/T),tx,-T/2,T/2)/T;
an(1) = double(vpa(A0,Nn));
for k=1:m
an(k+1)=double(vpa(subs(An,n,k),Nn));
bn(k+1)=double(vpa(subs(Bn,n,k),Nn));
end
%求直流信号
pause;
x=an(1)*cos(0*t)/2;
subplot(m+2,1,1)
plot(t/pi,y(m+1,:));
hold on;
plot(t/pi,x);
grid on;
hold off;
axis([ ]);
title('周期全波余弦信号');
xlabel('t/pi','Fontsize', 8);
%各次谐波叠加
for k=1:m
pause;
x=x+an(k+1).*cos(2*k*t);
y(k,:) = x;
subplot(m+2,1,k+1)
plot(t/pi,y(m+1,:));
hold on;
plot(t/pi,y(k,:));
hold off;
grid on;
axis([ ]); title(strcat('第',kk,'次谐波叠加'));
xlabel('t/pi','Fontsize', 8);
kk = strcat(kk,'、',num2str(k+1));
end
pause;
subplot(m+2,1,m+2)
plot(t/pi,y(1:m+1,:));