
trapezoid函数:
% 三相EMF梯形波,平顶宽度可调,但周期固定为2pi
function out=trapezoid(x)
h=x(1);% Amplifield h=1
a=x(2)/2*pi/180;% half of flat a=pi/3
xx=abs(x(3));
x=rem(xx,2*pi); % angle in 0~2*pi
k=(2*h)/(pi-2*a);% xie lv k=6/pi
A=0;
B=0;
C=0;
if x>=0 & x<=1/2*pi-a
A=-k*x;
elseif x>=1/2*pi-a & x<=1/2*pi+a
A=-h;
elseif x>=1/2*pi+a & x<=3/2*pi-a
A=k*(x-pi);
elseif x>=3/2*pi-a & x<=3/2*pi+a
A=h;
elseif x>=3/2*pi+a & x<=2*pi
A=-k*(x-2*pi);
end
if x>=0 & x<=1/6*pi+a
B=h;
elseif x>=1/6*pi+a & x<=1/2*pi-a+2/3*pi
B=-k*(x-2/3*pi);
elseif x>=1/2*pi-a+2/3*pi & x<=1/2*pi+a+2/3*pi
B=-h;
elseif x>=1/2*pi+a+2/3*pi & x<=3/2*pi-a+2/3*pi
B=k*(x-5/3*pi);
elseif x>=3/2*pi-a+2/3*pi & x<=2*pi
B=h;
end
if x>=0 & x<=1/3*pi-(1/2*pi-a)
C=-h;
elseif x>=1/3*pi-(1/2*pi-a) & x<=3/2*pi-a-2/3*pi
C=k*(x-1/3*pi);
elseif x>=3/2*pi-a-2/3*pi & x<=3/2*pi+a-2/3*pi
C=h;
elseif x>=3/2*pi+a-2/3*pi & x<=4/3*pi+(1/2*pi-a)
C=-k*(x-4/3*pi);
elseif x>=4/3*pi+(1/2*pi-a) & x<=2*pi
C=-h;
end
if A<=-h; % limit Amplifield
A=-h;
end
if B<=-h; % limit Amplifield
B=-h;
end
if C<=-h;% limit Amplifield
C=-h;
end
out=[A B C];