模糊控制器隶属度函数绘制

模糊控制器隶属度函数绘制

这里主要介绍两种方法,都是用MATLAB进行绘制,用Python绘图会报encoding编码的问题

隶属度函数有三角形隶属度函数、高斯隶属度函数、梯形隶属度函数等等

这里以三角形隶属度函数为例

直接绘制

% 模糊集合的名称
names = {'NB', 'NM', 'NS', 'ZO', 'PS', 'PM', 'PB'};

% 论域
x = linspace(-3, 3, 100);

% 隶属度函数参数
params = containers.Map( ...
    {'NB', 'NM', 'NS', 'ZO', 'PS', 'PM', 'PB'}, ...
    {[-4, -3, -2], [-3, -2, -1], [-2, -1, 0], [-1, 0, 1], [0, 1, 2], [1, 2, 3], [2, 3, 4]} ...
);

% 颜色
colors = ['r', 'g', 'b', 'c', 'm', 'y', 'k'];

% 绘制三角形隶属度函数
figure;
hold on;
for i = 1:length(names)
    param = params(names{i});
    y = zeros(size(x));
    y(x >= param(1) & x <= param(2)) = (x(x >= param(1) & x <= param(2)) - param(1)) / (param(2) - param(1));
    y(x >= param(2) & x <= param(3)) = (param(3) - x(x >= param(2) & x <= param(3))) / (param(3) - param(2));
    plot(x, y, colors(i), 'LineWidth', 2, 'DisplayName', names{i});
end
hold off;
legend('Location', 'NorthEast');
xlabel('论域');
ylabel('隶属度');
title('三角形隶属度函数图');
grid on;
print('triangular_membership_functions.png', '-dpng', '-r300');

出图效果大概是下面这样,效果一般,legend还挡住了曲线

在这里插入图片描述

plotmf()函数

在这里插入图片描述

这里需要我们先用MATLAB的fuzzy工具箱设计好模糊控制器,目录下有.fis文件

plotmf(fis,variableType,variableIndex)
  • fis — Fuzzy inference system,即.fis文件
  • variableType — Variable type'input' | 'output',即绘制输入还是输出变量的隶属度函数
  • variableIndex — 即输入/输出变量的序号,注意是正值
fis = readfis('fuzzyPID');
plotmf(fis,'output',1)

效果如下,还是比较规范的,横坐标的name和绘制变量的name是相同的

在这里插入图片描述

  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Prejudices

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

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

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

打赏作者

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

抵扣说明:

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

余额充值