在Matlab中已经开发出了11种隶属函数,让初学模糊控制的同学容易一头雾水,到底这些隶属函数有什么区别,实现的函数效果是怎么样的?在实际应该怎么选择呢?
matlab模糊控制器的隶属函数选择
Trimf | 三角形隶属函数 | Trapmf | 梯形隶属函数 |
Gbellmf | 广义钟形隶属函数 | Gaussmf | 高斯型隶属函数 |
Gauss2mf | 联合高斯型隶属函数 | Sigmf | S形隶属函数 |
Dsigmf | 双S形隶属函数 | Psigmf | 双S形乘积隶属函数 |
Pimf | II型隶属函数 | Smf | S状隶属函数 |
Zmf | Z形隶属函数 |
常用的6个隶属函数介绍和实现方式:
(1)、高斯型隶属函数
格式:y=gaussmf(x,[ σ,c])
说明:σ:指代正态分布的标准偏差
c
:指代正态分布中的均值μ
例子:x = 0:0.1:10;
y = gaussmf(x,[2 5]);
plot(x,y)
xlabel('gaussmf, P=[2 5]')
(2)、广义钟型隶属函数
格式 y = gbellmf(x,[a,b,c])
说明:x指定变量定义域范围,参数b通常为正,参数c位于曲线中心
例子:x = 0:0.1:10;
y = gbellmf(x,[2 4 6]);
plot(x,y)
xlabel('gbellmf, P=[2 4 6]')
(3)、S型隶属函数
格式:y = smf(x,[a b])
说明:% x为变量,a为b参数,用于定位曲线的斜坡部分。
例子:x = 0:0.1:10;
y = sigmf(x,[2 4]);
plot(x,y)
xlabel('sigmf, P=[2 4]')
(4)梯形隶属函数
格式 y = trapmf(x,[a b c d])
定义域由向量x确定,曲线形状由参数a,b,c,d确定,参数a和d对应梯形下部的左右两个拐点,参数b和c对应梯形上部的左右两个拐点。
例子: x = 0:0.1:10;
y = trapmf(x,[1 5 8 9]);
plot(x,y)
xlabel('trapmf, P=[1 5 8 9]')
(5)三角形隶属函数
格式: y = trimf(x,[a b c])
说明:定义域由向量x确定,曲线形状由参数a,b,c确定,参数a和c对应三角形下部的左右两个顶点,参数b对应三角形上部的顶点,这里要求a,生成的隶属函数总有一个统一的高度
例子:x = 0:0.1:10;
y = trimf(x,[3 6 9]);
plot(x,y)
xlabel('trimf, P=[3 6 9]')
(6)Z形隶属函数
格式: y = zmf(x,[a b])
说明:% x为自变量,a和b为参数,确定曲线的形状
例子:x = 0:0.1:10;
y = zmf(x,[3 8]);
plot(x,y)
xlabel('zmf, P=[3 8]')