在Matlab中为模糊推理系统创建查找表

问题描述

我为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 (将#修改为@)