问题描述
我为matlab中的模糊推理系统设计了一个查找表,其中有2个输入和一个输出以进行函数逼近。首先,我编写了一个函数来创建trimf类型的隶属函数,然后编写了主脚本以创建一个查找表。问题是为什么我想根据规则分数获取表的三维矩阵时会出错?这是我的函数:
function [result1,result2] = mfs_p1_C11(x1,x2,n)
dx1 = (max(x1)-min(x1))./(n-1);
dx2 = (max(x2)-min(x2))./(n-1);
%% Calculate Centers Of MemberShip Functions
center1 = linspace(min(x1),max(x1),n);
center2 = linspace(min(x2),max(x2),n);
result1 = cell(n,1);
result2 = cell(n,1);
%% Finally Calculate params of Trimf MemberShip Functions
for i=1:n
result1{i} = [center1(i)-dx1 center1(i) center1(i)+dx1];
result2{i} = [center2(i)-dx2 center2(i) center2(i)+dx2];
end
end
,下面是主要代码:
clc;
clear;
close all;
%% Create Data
f = @(x1,x2) 1./(3+x1+x2);
n1 = 50;
n2 = 50;
x1 = linspace(-1,1,n1);
x2 = linspace(-1,n2);
y = f(x1,x2);
%% 1:Create MemberShip Functions
nInput_1 =4;
nInput_2 = 4;
nOutput = 4;
x1_mfs = mfs_p1_C11(x1,nInput_1);
x2_mfs = mfs_p1_C11(x1,nInput_2);
y_mfs = mfs_p1_C11(x1,nOutput);
%% 2:Determine scores of rulles
S = zeros(nInput_1,nInput_2,nOutput);
for i=1:nInput_1
for j=1:nInput_2
for k=1:nOutput
paramets_input1 = x1_mfs{i};
paramets_input2 = x2_mfs{j};
paramets_output = y_mfs{k};
s = zeros(nInput_1,nOutput);
for p = 1:50
%% Aggregation
s(p) = trimf(x1(p),paramets_input1)*trimf(x2(p),paramets_input2)*...
trimf(y(p),paramets_output);
end
%% scores
S(i,j,k) = max(s);
end
end
end
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)