梯形波的傅里叶级数分解


1.前言

想必大家搜索看到这篇文章的时候,大概已经是踏入信号与系统的大门,不满足于书上的简单的矩形波三角波,想探探梯形波,今天它来了~

前几天在CSDN 硬件工程师炼成之路 大佬 的一篇文章《不同的反射系数,信号的是怎样的呢?》写的很好,里面大概是讲了源端发射到终端,用信号反射的观点,去计算源端和终端的电压波形。

在这里插入图片描述

用的是梯形波:

在这里插入图片描述
这种边沿可变+脉宽可控的梯形波,是非常有意义的。

因为实际的TX端,边沿不可能无限陡峭,脉宽也要做成可控。这个波形比单纯的矩形波更常用。

傅里叶级数真的优雅,一般书本上的习题也都是三角波、矩形波,积分起来相对容易。脑子里突然一热,想把边沿可变+脉宽可控的梯形波,用傅里叶级数分解掉。
在这里插入图片描述

有点飘了,数学底子不行,不会用对称性,积分也不熟练了,没什么技巧,就是死做。

2.动手开搞

周五晚上就酝酿了,徘徊退缩了很久想一想还是积一下,网上仅有的资源也几乎只有一个答案,而且边沿不灵活,数学表达式也不是我想要的。

列表达式:

在这里插入图片描述
然后开始漫长的积分,很长很长,很细很细,像是高中的笨小孩,死做椭圆的题,设未知数,代入方程越解越长:

在这里插入图片描述

过程非常的痛苦,实不相瞒持续了3个小时,输完所有公式,从18.30持续纠错到近了22.30,洋洋洒洒7-8页的重复劳动。

*所有详细的推导放在网盘里了

在这里插入图片描述

3.导入matlab 进行plot

matlab是个高级计算器了,可以帮你验证下积分的结果正确与否。
把word里的公式全部打入 matlab文件,看看波图

3.1 A=1,T=100,m=10,h=30,p=20

(1)振幅A=1,周期T=100,上升时间m=10,正脉宽=30,下降时间p=20;
在这里插入图片描述

3.2 A=1,T=100,m=5,h=40,p=5

(2)振幅A=1,周期T=100,上升时间m=5,正脉宽=40,下降时间p=5;
在这里插入图片描述

3.3 A=2,T=150,m=20,h=50,p=1

(3)振幅A=2,周期T=150,上升时间m=20,正脉宽=50,下降时间p=1;

在这里插入图片描述

3.4 奇偶对称性

在这里插入图片描述
可以看到An是偶函数,Bn是奇函数,A0是f(t)的直流分量。
波形非常的完美,不过无法想象,为什么要在那些点跳变,把这三个值相加就正好是一个梯形波。

在这里插入图片描述

4.代码


clear all;
close all;

%parameter set


n=1:1:10;

A=2;T=150;m=20;h=50;p=20;

t=0:0.01:2*T;






str=strcat('A=',num2str(A),',T=',num2str(T),',m=', ...
num2str(m),',h=',num2str(h),',p=',num2str(p) )

%(2./T)
%n.*omg
omg=2.*pi./T;
%(n.*omg)


%	A./(n.*omg)

g1 =(1./(n.*omg));


X1= (A./(n.*omg)).*sin(n.*omg.*m) + ...
(A./m).*(	1./	(  (n.*omg).*(n.*omg)	)	).*cos(n.*omg.*m)- ...
(A./m).*(	1./	(  (n.*omg).*(n.*omg)	)	);


X2=(A./(n.*omg)).*sin(n.*omg.*m+n.*omg.*h) - ...
(A./(n.*omg)).*sin(n.*omg.*m);



% v1 (A./p).*(1./(n.*omg))
v1 = (A./p).*(1./(n.*omg));

X3_1= -v1.*(m+h+p) .* sin(n.*omg.*m+n.*omg.*h+n.*omg.*p) + ...
v1 .*(m+h).*sin(n.*omg.*m+n.*omg.*h) + ...
-v1.*g1.*cos(n.*omg.*m+n.*omg.*h+n.*omg.*p) + ...
v1.*g1.*cos(n.*omg.*m+n.*omg.*h);





v2 =(A.*m)./(p.*n.*omg);
X3_2 = v2 .* sin(n.*omg.*m+n.*omg.*h+n.*omg.*p) - ...
v2 .* sin(n.*omg.*m+n.*omg.*h);


v3 = (A)./ (n.*omg);
X3_3=v3 .*  sin(n.*omg.*m+n.*omg.*h+n.*omg.*p) - ...
v3 .* sin(n.*omg.*m+n.*omg.*h);

v4 =(A.*h)./(p.*n.*omg);
X3_4 = v4 .* sin(n.*omg.*m+n.*omg.*h+n.*omg.*p) - ...
v4 .* sin(n.*omg.*m+n.*omg.*h);

X3=X3_1 + X3_2 + X3_3 + X3_4;

an=(2./T).*X1+(2./T).*X2+(2./T).*X3;





% 



K1=(-A.*g1) .*cos(n.*omg.*m)+ (A./m).*g1.*g1.*sin(n.*omg.*m);
K2= -A.*g1 .* cos(n.*omg.*m + n.*omg.*h) + A.*g1.* cos(n.*omg.*m);
g2=(A./p);
K3_1=g2.*g1.*(m+h+p).*cos(n.*omg.*m + n.*omg.*h+n.*omg.*p) - ...
g2.*g1.*(m+h).*cos(n.*omg.*m + n.*omg.*h) - ...
g2.*g1.*g1.*sin(n.*omg.*m + n.*omg.*h+n.*omg.*p) + ...
g2.*g1.*g1.*sin(n.*omg.*m + n.*omg.*h);
g3=(A.*m)./(p.*n.*omg);

K3_2 = -g3.*cos(n.*omg.*m + n.*omg.*h+n.*omg.*p) + ...
g3.*cos(n.*omg.*m + n.*omg.*h) ;

K3_3 = -A.*g1.*cos(n.*omg.*m + n.*omg.*h+n.*omg.*p) + ...
A.*g1.*cos(n.*omg.*m + n.*omg.*h);


g4 = (A.*h)./(p.*n.*omg);

K3_4 = -g4.* cos(n.*omg.*m + n.*omg.*h+n.*omg.*p) + ...
+g4.* cos(n.*omg.*m + n.*omg.*h);

K3=K3_1 + K3_2 + K3_3 + K3_4;

bn=(2./T).*K1+(2./T).*K2+(2./T).*K3;




ft=zeros(1,length(t));


A0= A.*m./(2.*T) + ...
A.*h./T + ...
-(A./(2.*T.*p))       .*       (     (m+h+p).* (m+h+p)  -(m+h).*(m+h)      ) +...
(1./T) .* (A.*m./p + A +A.*h./p ) .*p ;


for j =1:1:n(end)
	ft=ft + an(j) .* cos(j.*omg.*t)  + bn(j) .* sin(j.*omg.*t);
end

figure(1)
plot(t, A0 + ft)

m_max= max(A0 + ft);
m_min= min(A0 + ft);

axis([0,t(end) m_min-1.1 m_max+1.1])

legend(str) 


xlabel('time axis')
ylabel('amplitude axis')
set(gca,'Fontname','Times New Roman','FontSize',15);


if 0
    figure(2)
    AN=zeros(1,length(t));
    BN=zeros(1,length(t));
    for j =1:1:n(end)
        AN=AN + an(j) .* cos(j.*omg.*t);
    end

    for j =1:1:n(end)
        BN=BN + bn(j) .* sin(j.*omg.*t);
    end

    plot(t, AN,':r','Linewidth',1);
    hold on;
    plot(t, BN,':b','Linewidth',1);
    hold on;
    plot(t, A0.*ones(1,length(t)),':k','Linewidth',1);
    hold on;
    plot(t, A0+BN+AN,'-k','Linewidth',1);
    hold on;

    legend('An','Bn','A0','f(t)');
    xlabel('time axis')
    ylabel('amplitude axis')
    set(gca,'Fontname','Times New Roman','FontSize',15);
end



% + bn(j) .* sin(j.*omg.*t)

完整的文档放在网盘自取:
链接:https://pan.baidu.com/s/1kHA5rh2I8Fx54K3No3O79Q?pwd=AAAA
提取码:AAAA




欢迎关注我的公众号:沈土豪的书屋

org 0000h loot: jnb p1.0,aa jnb p1.1,bb jnb p1.2,cc jnb p1.3,dd jnb p1.4,ee sjmp loot aa: mov r7,#10 net: mov p2,#0 acall delay mov p2,#0ffh acall delay djnz r7,net sjmp loot bb: mov r6,#10 lll: mov A,#0 ll: mov p2,A inc a mov r2,#10 djnz r2,$ cjne a,#0ffh,ll djnz r6,lll sjmp loot cc: mov r5,#10 looop:mov a,#0 loop: mov p2,a inc a mov r2,#10 djnz r2,$ cjne a,#0ffh,loop gg: mov p2,a dec a mov r2,#10 djnz r2,$ jnz gg djnz r5,looop sjmp loot dd: start:mov r1,#10 start1:mov a,#0 xx: mov p2,a mov r2,#10 djnz r2,$ inc a cjne a,#0ffh,xx acall delay2 yy: mov p2,a dec a mov r2,#10 djnz r2,$ jnz yy mov p2,a acall delay2 djnz r1,start1 sjmp loot ee: MOV R6,#10 LOOP2: MOV DPTR,#table LOOP3:MOV A,#0 MOVC A,@A+DPTR MOV P2,A ACALL DELAY4 INC DPTR mov r4,dph CJNE r4,#01h,loop3 mov r4,dpl cjne r4,#0f7h,loop3 DJNZ R6,LOOP2 ljmp loot DELAY4:mov r2,#10 djnz r2,$ ret TABLE: DB 128, 130, 132, 135, 137, 139, 141, 144, 146, 148 DB 150, 152, 155, 157, 159, 161, 163, 165, 168, 170 DB 172, 174, 176, 178, 180, 182, 184, 186, 188, 190 DB 192, 194, 196, 198, 200, 201, 203, 205, 207, 209 DB 210, 212, 214, 215, 217, 219, 220, 222, 223, 225 DB 226, 227, 229, 230, 232, 233, 234, 235, 237, 238 DB 239, 240, 241, 242, 243, 244, 245, 246, 247, 247 DB 248, 249, 250, 250, 251, 252, 252, 253, 253, 254 DB 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 DB 255, 255, 255, 255, 255, 255, 255, 255, 255, 254 DB 254, 254, 253, 253, 252, 252, 251, 250, 250, 249 DB 248, 247, 247, 246, 245, 244, 243, 242, 241, 240 DB 239, 238, 237, 235, 234, 233, 232, 230, 229, 227 DB 226, 225, 223, 222, 220, 219, 217, 215, 214, 212 DB 210, 209, 207, 205, 203, 201, 200, 198, 196, 194 DB 192, 190, 188, 186, 184, 182, 180, 178, 176, 174 DB 172, 170, 168, 165, 163, 161, 159, 157, 155, 152 DB 150, 148, 146, 144, 141, 139, 137, 135, 132, 130 DB 128, 126, 124, 121, 119, 117, 115, 112, 110, 108 DB 106, 104, 101, 99, 97, 95, 93, 91, 88, 86 DB 84, 82, 80, 78, 76, 74, 72, 70, 68, 66 DB 64, 62, 60, 58, 56, 55, 53, 51, 49, 47 DB 46, 44, 42, 41, 39, 37, 36, 34, 33, 31 DB 30, 29, 27, 26, 24, 23, 22, 21, 19, 18 DB 17, 16, 15, 14, 13, 12, 11, 10, 9, 9 DB 8, 7, 6, 6, 5, 4, 4, 3, 3, 2 DB 2, 2, 1, 1, 1, 0, 0, 0, 0, 0 DB 0, 0, 0, 0, 0, 0, 1, 1, 1, 2 DB 2, 2, 3, 3, 4, 4, 5, 6, 6, 7 DB 8, 9, 9, 10, 11, 12, 13, 14, 15, 16 DB 17, 18, 19, 21, 22, 23, 24, 26, 27, 29 DB 30, 31, 33, 34, 36, 37, 39, 41, 42, 44 DB 46, 47, 49, 51, 53, 55, 56, 58, 60, 62 DB 64, 66, 68, 70, 72, 74, 76, 78, 80, 82 DB 84, 86, 88, 91, 93, 95, 97, 99, 101, 104 DB 106, 108, 110, 112, 115, 117, 119, 121, 124, 126 DB 128 delay:mov r2,#200 djnz r2,$ ret delay2: mov r3,#60 zz: mov r2,#0 djnz r2,$ djnz r3,zz ret end
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沈土豪的书屋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值