自学# matlab画fal函数图像(分段)

固定α改变δ或固定δ改变α画出fal函数的图像,利用曲线的平滑和连续性判断自抗扰的控制性能,从而对fal函数进行优化

公式如下

%固定δ为0.01,改变α%
e=-1:0.01:1;
fal1=zeros(size(e));
for i=1:length(e)
if abs(e(i))>0.01
fal1(i)=(abs(e(i))^0)*sign(e(i));
else
fal1(i)=e(i)/(0.01^(1-0));
end
end
fal2=zeros(size(e));
for i=1:length(e)
if abs(e(i))>0.01
fal2(i)=(abs(e(i))^0.2)*sign(e(i));
else
fal2(i)=e(i)/(0.01^(1-0.2));
end
end
fal3=zeros(size(e));
for i=1:length(e)
if abs(e(i))>0.01
fal3(i)=(abs(e(i))^0.4)*sign(e(i));
else
fal3(i)=e(i)/(0.01^(1-0.4));
end
end
fal4=zeros(size(e));
for i=1:length(e)
if abs(e(i))>0.01
fal4(i)=(abs(e(i))^0.6)*sign(e(i));
else
fal4(i)=e(i)/(0.01^(1-0.6));
end
end
fal5=zeros(size(e));
for i=1:length(e)
if abs(e(i))>0.01
fal5(i)=(abs(e(i))^0.8)*sign(e(i));
else
fal5(i)=e(i)/(0.01^(1-0.8));
end
end
fal6=zeros(size(e));
for i=1:length(e)
if abs(e(i))>0.01
fal6(i)=(abs(e(i))^1)*sign(e(i));
else
fal6(i)=e(i)/(0.01^(1-1));
end
end
hold on
plot(e,fal1)
hold on
plot(e,fal2)
hold on
plot(e,fal3)
hold on
plot(e,fal4)
hold on
plot(e,fal5)
hold on
plot(e,fal6)

%固定α为0.25,改变δ%
close all
clc
e=-1:0.01:1;
fal1=zeros(size(e));
for i=1:length(e)
if abs(e(i))>0
fal1(i)=(abs(e(i))^0.25)*sign(e(i));
else
fal1(i)=e(i)/(0^(1-0.25));
end
end
fal2=zeros(size(e));
for i=1:length(e)
if abs(e(i))>0.2
fal2(i)=(abs(e(i))^0.25)*sign(e(i));
else
fal2(i)=e(i)/(0.2^(1-0.25));
end
end
fal3=zeros(size(e));
for i=1:length(e)
if abs(e(i))>0.4
fal3(i)=(abs(e(i))^0.25)*sign(e(i));
else
fal3(i)=e(i)/(0.4^(1-0.25));
end
end
fal4=zeros(size(e));
for i=1:length(e)
if abs(e(i))>0.6
fal4(i)=(abs(e(i))^0.25)*sign(e(i));
else
fal4(i)=e(i)/(0.6^(1-0.25));
end
end
fal5=zeros(size(e));
for i=1:length(e)
if abs(e(i))>0.8
fal5(i)=(abs(e(i))^0.25)*sign(e(i));
else
fal5(i)=e(i)/(0.8^(1-0.25));
end
end
fal6=zeros(size(e));
for i=1:length(e)
if abs(e(i))>1
fal6(i)=(abs(e(i))^0.25)*sign(e(i));
else
fal6(i)=e(i)/(1^(1-0.25));
end
end
hold on
plot(e,fal1)
hold on
plot(e,fal2)
hold on
plot(e,fal3)
hold on
plot(e,fal4)
hold on
plot(e,fal5)
hold on
plot(e,fal6)

改变坐标轴范围

axis([-1 1 -1.5 1.5]);

如图 所示为当 δ=0.01,α 取值不同时 fal(e,α,δ)函数响应曲线,当 α=0.25,δ 取值不同时 fal(e,α,δ)函数响应曲线。从图中可以看出: α 值取值不同时,fal(e,α,δ)函数的线性度也不同。α 值越小,非线性度越强,α 值 越大,非线性度越弱;δ 值决定了 fal(e,α,δ)函数的非线性区间范围,δ 值越大,线 性区间越大,δ 值越小,线性区间则越小。 可以发现,fal(e,α,δ)函数曲线在|e|=δ 时虽然连续但是并不平滑, 存在突变从而会导致系统的控制性能不佳。针对这个问题,将 fal(e,α,δ)函数改写为:

为保证 fal'(e,α,δ)函数在|e|=δ 处连续且可导,需要满足

求得:

e=-1:0.01:1;
fal1=zeros(size(e));
for i=1:length(e)
if abs(e(i))>0.01
fal1(i)=(abs(e(i))^0)*sign(e(i));
else
fal1(i)=((3-0)*(0.01^0))*sin(e(i))/(3*sin(0.01)-0.01*cos(0.01))+((0*(0.01^(0-1))*sin(0.01)-(0.01^0)*cos(0.01))*e(i)^3)/(3*(sin(0.01^2))-(0.01^3)*cos(0.01));
end
end
fal2=zeros(size(e));
for i=1:length(e)
if abs(e(i))>0.01
fal2(i)=(abs(e(i))^0.2)*sign(e(i));
else
fal2(i)=((3-0.2)*(0.01^0.2))*sin(e(i))/(3*sin(0.01)-0.01*cos(0.01))+((0.2*(0.01^(0.2-1))*sin(0.01)-(0.01^0.2)*cos(0.01))*e(i)^3)/(3*(sin(0.01^2))-(0.01^3)*cos(0.01));
end
end
fal3=zeros(size(e));
for i=1:length(e)
if abs(e(i))>0.01
fal3(i)=(abs(e(i))^0.4)*sign(e(i));
else
fal3(i)=((3-0.4)*(0.01^0.4))*sin(e(i))/(3*sin(0.01)-0.01*cos(0.01))+((0.4*(0.01^(0.4-1))*sin(0.01)-(0.01^0.4)*cos(0.01))*e(i)^3)/(3*(sin(0.01^2))-(0.01^3)*cos(0.01));
end
end
fal4=zeros(size(e));
for i=1:length(e)
if abs(e(i))>0.01
fal4(i)=(abs(e(i))^0.6)*sign(e(i));
else
fal4(i)=((3-0.6)*(0.01^0.6))*sin(e(i))/(3*sin(0.01)-0.01*cos(0.01))+((0.6*(0.01^(0.6-1))*sin(0.01)-(0.01^0.6)*cos(0.01))*e(i)^3)/(3*(sin(0.01^2))-(0.01^3)*cos(0.01));
end
end
fal5=zeros(size(e));
for i=1:length(e)
if abs(e(i))>0.01
fal5(i)=(abs(e(i))^0.8)*sign(e(i));
else
fal5(i)=((3-0)*(0.01^0.8))*sin(e(i))/(3*sin(0.01)-0.01*cos(0.01))+((0.8*(0.01^(0.8-1))*sin(0.01)-(0.01^0.8)*cos(0.01))*e(i)^3)/(3*(sin(0.01^2))-(0.01^3)*cos(0.01));
end
end
fal6=zeros(size(e));
for i=1:length(e)
if abs(e(i))>0.01
fal6(i)=(abs(e(i))^1)*sign(e(i));
else
fal6(i)=((3-1)*(0.01^1))*sin(e(i))/(3*sin(0.01)-0.01*cos(0.01))+((1*(0.01^(1-1))*sin(0.01)-(0.01^1)*cos(0.01))*e(i)^3)/(3*(sin(0.01^2))-(0.01^3)*cos(0.01));
end
end
hold on
plot(e,fal1)
hold on
plot(e,fal2)
hold on
plot(e,fal3)
hold on
plot(e,fal4)
hold on
plot(e,fal5)
hold on
plot(e,fal6)
e=-1:0.01:1;
fal1=zeros(size(e));
for i=1:length(e)
if abs(e(i))>0
fal1(i)=(abs(e(i))^0.25)*sign(e(i));
else
fal1(i)=((3-0.25)*(0^0.25))*sin(e(i))/(3*sin(0)-0*cos(0))+((0.25*(0^(0.25-1))*sin(0)-(0^0.25)*cos(0))*e(i)^3)/(3*(sin(0^2))-(0^3)*cos(0));
end
end
fal2=zeros(size(e));
for i=1:length(e)
if abs(e(i))>0.2
fal2(i)=(abs(e(i))^0.25)*sign(e(i));
else
fal2(i)=((3-0.25)*(0.2^0.25))*sin(e(i))/(3*sin(0.2)-0.2*cos(0.2))+((0.25*(0.2^(0.25-1))*sin(0.2)-(0.2^0.25)*cos(0.2))*e(i)^3)/(3*(sin(0.2^2))-(0.2^3)*cos(0.2));
end
end
fal3=zeros(size(e));
for i=1:length(e)
if abs(e(i))>0.4
fal3(i)=(abs(e(i))^0.25)*sign(e(i));
else
fal3(i)=((3-0.25)*(0.4^0.25))*sin(e(i))/(3*sin(0.4)-0.4*cos(0.4))+((0.25*(0.4^(0.25-1))*sin(0.4)-(0.4^0.25)*cos(0.4))*e(i)^3)/(3*(sin(0.4^2))-(0.4^3)*cos(0.4));
end
end
fal4=zeros(size(e));
for i=1:length(e)
if abs(e(i))>0.6
fal4(i)=(abs(e(i))^0.25)*sign(e(i));
else
fal4(i)=((3-0.25)*(0.6^0.25))*sin(e(i))/(3*sin(0.6)-0.6*cos(0.6))+((0.25*(0.6^(0.25-1))*sin(0.6)-(0.6^0.25)*cos(0.6))*e(i)^3)/(3*(sin(0.6^2))-(0.6^3)*cos(0.6));
end
end
fal5=zeros(size(e));
for i=1:length(e)
if abs(e(i))>0.8
fal5(i)=(abs(e(i))^0.25)*sign(e(i));
else
fal5(i)=((3-0.25)*(0.8^0.25))*sin(e(i))/(3*sin(0.8)-0.8*cos(0.8))+((0.25*(0.8^(0.25-1))*sin(0.8)-(0.8^0.25)*cos(0.8))*e(i)^3)/(3*(sin(0.8^2))-(0.8^3)*cos(0.8));
end
end
fal6=zeros(size(e));
for i=1:length(e)
if abs(e(i))>1
fal6(i)=(abs(e(i))^0.25)*sign(e(i));
else
fal6(i)=((3-0.25)*(1^0.25))*sin(e(i))/(3*sin(1)-1*cos(1))+((0.25*(1^(0.25-1))*sin(1)-(1^0.25)*cos(1))*e(i)^3)/(3*(sin(1^2))-(1^3)*cos(1));
end
end
hold on
plot(e,fal1)
hold on
plot(e,fal2)
hold on
plot(e,fal3)
hold on
plot(e,fal4)
hold on
plot(e,fal5)
hold on
plot(e,fal6)

改良后的函数曲线为:

改进 后的 fal'(e,α,δ)函数曲线较之前更加平滑,且在|e|=δ 处连续且可导。并且 δ 值对整 个曲线的影响降低,突变现象明显减弱,可有效减轻非线性函数产生的高频颤振现象

参考文献:基于模糊自抗扰的矿用电机车PMSM速度控制系统研究

  • 9
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值