📄 ex0802.m
字号:
% [ex8.2] 周期T=5,脉宽tao=1的矩形脉冲及频谱图
function [A_sym,B_sym]=CTFSshbpsym(T,Nf)
% 采用符号计算求[0,T]内时间函数的三角级数展开系数。
% 函数的输入输出都是数值量
% Nn 输出数据的准确位数
% A_sym 第1元素是直流项,其后元素依次是1,2,3...次谐波cos项展开系数
% B_sym 第2,3,4,...元素依次是1,2,3...次谐波sin项展开系数
% T T=m*tao, 信号周期
% Nf 谐波的阶数
% Nn 输出数据的准确位数
% m (m=T/tao)周期与脉冲宽度之比,如m=4,8,16,100等
% tao 脉宽:tao=T/m
syms t n y
if nargin<3;Nf=input('plear Input 所需展开的最高谐波次数:Nf=');end
T=input('plear Input 信号的周期T=');
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; % 用三角函数展开系数A、B值合成付里叶指数系数
S6=fliplr(S5);
N=Nf*2*pi/T;
k2=-N:2*pi/T:N;
S7=[S6,S5(2:end)];
subplot(3,3,3)
x=time_fun_e(t) % 调用连续时间函数-周期矩形脉冲
subplot(2,1,1)
stem(k2,abs(S7)); %画出周期矩形脉冲的频谱(T=M*tao)
title('连续时间函数周期矩形脉冲的双边幅度谱')
axis([-80,80,0,0.12])
line([-80,80],[0,0])
line([0,0],[0,0.12])
end
%-------------------------------------------
function y=time_fun_s(t)
% 该函数是CTFSshbpsym.m的子函数。它由符号变量和表达式写成。
syms a a1
T=input('plear Input 信号的周期T=');
M=input('周期与脉冲宽度之比M=');
A=1;tao=T/M;a=tao/2;
y1=sym('Heaviside(t+a1)')*A;
y=y1-sym('Heaviside(t-a1)')*A;
y=subs(y,a1,a);
y=simple(y);
%------------------------------
function x=time_fun_e(t)
% 该函数是CTFSshbpsym.m的子函数。它由符号变量和表达式写成。
% t 是时间数组
% T 是周期 duty=tao/T=0.2
T=5;t=-2*T:0.01:2*T;tao=T/5;
x=rectpuls(t,1); %产生一个宽度tao=1的矩形脉冲
subplot(2,2,2)
plot(t,x)
hold on
x=rectpuls(t-5,1); %产生一个宽度tao=1的矩形脉,中心位置在t=5处
plot(t,x)
hold on
x=rectpuls(t+5,1); %产生一个宽度tao=1的矩形脉,中心位置在t=-5处
plot(t,x)
title('周期为T=5,脉宽tao=1的矩形脉冲')
axis([-10,10,0,1.2])
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -