当前位置:首页 > 《机械工程测试技术》MATLAB仿真实验指导书
实验二 周期信号波形的合成与分解
一、实验目的
学会使用MATLAB观察方波信号的分解与合成
二、实验内容
编制MATLAB程序,仿真实现下图周期方波信号的分解与合成。
%[ex3.1]方波分解与合成 t=0:0.01:2*pi;
f1=4/pi*sin(t); % 基波
f3=4/pi*(sin(3*t)/3); %三次谐波
f5=4/pi*(sin(5*t)/5); f7=4/pi*(sin(7*t)/7); f9=4/pi*(sin(9*t)/9); y1=f1+f3; y2=f1+f3+f5;
y3=f1+f3+f5+f7+f9;
subplot(2,2,1) %在第一个子窗口画基波分量 plot(t,f1),hold on
y=1*sign(pi-t); %画方波信号
plot(t,y,'c:')
title('周期矩形波的形成-基波')
subplot(2,2,2) %在第二个子窗口画 (基波+3次谐波)分量 plot(t,y1),hold on y=1*sign(pi-t); plot(t,y,'c:')
title('周期矩形波的形成-基波+3次谐波')
subplot(2,2,3) %在第三个子窗口画 (基波+3次谐波+ 5次谐波)分量
plot(t,y2),hold on
y=1*sign(pi-t); plot(t,y,'c:')
title('基波+3次谐波+5次谐波') subplot(2,2,4) %第四个子窗口画 (基波+3次谐波+5次谐波+7次谐波+9次谐波)分量
plot(t,y3),hold on y=1*sign(pi-t); plot(t,y,'c:')
title('-基波+3次谐波+5次谐波+7次谐波+9次谐波') end
三、程序运行结果
实验三 典型信号频谱分析
一、实验目的
用 MATLAB 分析周期方波脉冲、周期三角波脉冲的频谱。
二、实验内容
题目1、已知周期方波脉冲信号如下图所示,其幅度为1,脉冲宽度
“占空比”:duty=1/2,周期T=5.使用MATLAB编程绘出该周期信号的频谱。
参考程序:
% 周期方波脉冲及单边频谱
function [A_sym,B_sym]=CTFSdbfb(T,Nf,Nn)
% 采用符号计算求[0,T]内时间函数的三角级数展开系数。 % % % %
函数的输入输出都是数值量
% Nf
Nn A_sym B_sym
谐波的阶数
输出数据的准确位数
第1元素是直流项,其后元素依次是1,2,3...次谐波cos项展开系数 第2,3,4,...元素依次是1,2,3...次谐波sin项展开系数
syms t n k y T=5;
if nargin<4;Nf=input('plear Input 所需展开的最高谐波次数:');end T=5;
if nargin<5;Nn=32;end y=time_fun_s(t); A0=2*int(y,t,0,T)/T;
As=int(2*y*cos(2*pi*n*t/T)/T,t,0,T);
Bs=int(2*y*sin(2*pi*n*t/T)/T,t,0,T); A_sym(1)=double(vpa(A0,Nn)); for k=1:Nf
A_sym(k+1)=double(vpa(subs(As,n,k),Nn)); B_sym(k+1)=double(vpa(subs(Bs,n,k),Nn));end if nargout==0
S1=fliplr(A_sym) %对A_sym阵左右对称交换 S1(1,k+1)=A_sym(1) %A_sym的1*k阵扩展为1*(k+1)阵
S2=fliplr(1/2*S1) %对扩展后的S1阵左右对称交换回原位置 S3=fliplr(1/2*B_sym) %对B_sym阵左右对称交换 S3(1,k+1)=0 %B_sym的1*k阵扩展为1*(k+1)阵
S4=fliplr(S3) %对扩展后的S3阵左右对称交换回原位置 S5=S2-i*S4; N=Nf*2*pi/T; k2=0:2*pi/T:N; subplot(3,3,3)
x=squ_timefun(t,T) %调用连续时间函数-周期方波脉冲 T=5;t=-2*T:0.01:2*T; plot(t,x)
title('周期方波脉冲') axis([-10,10,-1,1.2]) line([-10,10],[0,0]) subplot(3,1,3)
stem(k2,abs(S5)); %画出周期方波脉冲的频谱(脉宽a=T/2) title('周期方波脉冲的单边频谱') axis([0,60,0,0.6]) end
%------------------------------------------- function y=time_fun_s(t)
% 该函数是CTFSdbfb.m的子函数。它由符号变量和表达式写成。 syms a a1 T=5;a=T/2;
y1=sym('Heaviside(t)')*2-sym('Heaviside(t-a1)'); y=y1-sym('Heaviside(t+a1)'); y=subs(y,a1,a); y=simple(y);
%------------------------------ function x=squ_timefun(t,T)
% 该函数是CTFSdbfb.m的子函数,它由方波脉冲函数写成。 % %
t T
是时间数组
是周期 duty'占空比':信号为正的区域在一个周期内所占的百分
T=5;t=-2*T:0.01:2*T;duty=50; x=square(t,duty);
共分享92篇相关文档