第九章信号与系统实验已完成.doc
文本预览下载声明
信号与线性系统分析实验报告
任课教师:
实验名称:
年级、专业:
学 号:
姓 名:
日期: 2012 年 5 月 9 日
一、实验目的
1. 通过Matlab实现周期信号的傅里叶级数分解.
2. 理解各种形式的傅里叶级数分解.
二、实验内容
1. 周期信号的傅里叶级数.
2. 利用Matlab实现周期信号的频谱分析.
3. 典型周期信号的频谱分析及Matlab实现.
三、主要算法与程序
SolveFourier.m的M文件如下所示:
function [an,bn,cn,phase]=SolveFourier(ft,T,Nf)
syms t n k x
Nn = 32;
an = zeros(Nf+1,1);
bn = zeros(Nf+1,1);
phase = zeros(Nf+1,1);
A0 =2*int(ft,t,-T/2,T/2)/T;
As=2*int(ft*cos(2*pi*n*t/T),t,-T/2,T/2)/T; Bs=2*int(ft*sin(2*pi*n*t/T),t,-T/2,T/2)/T;
an(1) = double(vpa(A0,Nn));
for k=1:Nf
an(k+1)=double(vpa(subs(As,n,k+eps),Nn));
bn(k+1)=double(vpa(subs(Bs,n,k+eps),Nn));
end
cn = sqrt(an.*an+bn.*bn);
for i = 1:Nf
if (an(i) 0bn(i)=0)
phase(i) = -atan(bn(i)/an(i));
else if (an(i) 0bn(i)=0);
phase(i) = pi-atan(bn(i)/an(i));
else if (an(i) = 0bn(i)0);
phase(i) = pi-atan(bn(i)/an(i));
else
phase(i) = -atan(bn(i)/an(i));
end
end
end
end
end
这个SolveFourier.m的M文件,其中ft为待分解的函数,T为周期,Nf为要分解的次数.然后返回的an为傅里叶系数,bn为傅里叶系数,cn为模值,phase为相位值.
9.1 (a)
display(Please input the value of m (傅里叶级数展开的项数));
m = input(m = );
T = 2*pi;
Nf = 5;
t=-5*T:0.01:5*T;
x=cos(t);
d=-5*T:T:5*T;
y=pulstran(t,d,rectpuls,T/2);
f=x.*y;
y = zeros(m+1,max(size(t)));
y(m+2,:) = f;
grid; %在图形中加入栅格
axis([-4 4 -1.5 1.5]);
title(周期方波);
xlabel(单位pi,Fontsize, 8);
x = zeros(size(t));
x = 1/pi;
y(1,:)=x;
x=0.5.*sin(2*pi/T*(t+0.5.*pi))+x;
y(2,:)=x;
for k=2:2:2*m
x = x-2/(k.^2-1).*cos(2*k*pi/T*(t+0.5.*pi));
y((k+4)/2,:) = 1/pi.*x; %计算各次谐波叠加和
grid;
axis([-4 4 -1.5 1.5]);
end
hold on
plot(t,y(1:m+2,:));
legend(直流分量,一次谐波,二次谐波,三次谐波,四次谐波,五次谐波,周期半波余弦信号);
grid;
axis([-4 4 -1.5 1.5]);
title(各次谐波叠加波形);
xlabel(单位pi,Fontsize, 8);
hold off
% End
Please input the value of m (傅里叶级数展开的项数)
m = 5
9.3
display(Please input the value of T, tao and Nf);
T = input(T = );
tao = input(tao = );
Nf = input(Nf = );
syms t;
s1 = Heaviside(t);
s2 = strcat(Heaviside(t-,num2str(tao),));
显示全部