模糊控制器隶属度函数绘制
创始人
2025-05-30 01:32:05

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

这里主要介绍两种方法,都是用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是相同的

在这里插入图片描述

相关内容

热门资讯

异源同境 雅俗共生——贵州军屯...   【口耳间的中国】  作者:吴伟军(贵州师范大学文学院教授)  贵州地处西南地区的中心位置,西邻滇...
春天,它的叶子最嫩,做成汤,有... 女儿就读的学校对面,一家专门做早饭的早餐店旺了20多年,店面不算大,可是生意好得很,进店吃早餐,几乎...
韭菜粉丝这么炒,无肉也喷香! ... 春天正是吃韭菜、豆芽的好时节。一是这俩鲜嫩,二是符合中医春季养生所说的“生发”。其实现在一年四季,天...
盘点世界最奇葩罕见的20种水果... 引导语:世界上传闻有很多各种各样的美味罕见水果,我们一般只在电视上看到过,但是能够吃到的人几乎很少,...
如何蒸出平滑如镜的鸡蛋羹? 给... 岳父做的一手好菜,人送外号“老师傅”,他蒸出来的鸡蛋羹爽滑细嫩味道好,孩子们都是抢着吃!别以为蒸鸡蛋...