模糊推理:if A,B,C then D (三输入一输出,自编)
1.底层函数
1.1模糊向量的笛卡尔积:
function[D]=cartesian_product(A,B)
[a1,a2]=size(A);
[b1,b2]=size(B);
if a1== b1== 1
C=A’;
for i=1:a2
for j=1:b2
D(i,j)=min(C(i,1),B(1,j));
end
end
else
fprintf(‘输入矩阵不规范’)
end
1.2模糊向量的最大最小合成:
function [T]=max_minCompound(R,S)
[m1,n1]=size®;
[m2,n2]=size(S);
if n1==m2
for i=1:m1
for j=1:n2
T(i,j)=max(min(R(i,:),S(:,j)’));
end
end
else
fprint(‘模糊集合有错误’);
end
2. 计算模糊关系R
%A=[1 0.5 0.1] B=[0.1 1 0.1]C=[0.1 0.5 1] D=[0.4 0.1];
function[]=R(A,B,C,D)
%A,B,C论域元素相同
%分别计算A与D、B与D、C与D笛卡尔积
R1=cartesian_product(A,D);
R2=cartesian_product(B,D);
R3=cartesian_product(C,D);
%计算R1、R2、R3最小值
R=min(min(R1,R2),R3)
3. 基于推理合成规则R,求取D
% A=[1 0.5 0.1];B=[0.1 1 0.1];C=[0.1 0.5 1];R=[0.1 0.1;0.4 0.1;0.1 0.1]
function []=D(A,B,C,R)
%计算A与R、B与R、C与R的合成
D1=max_minCompound(A,R);
D2=max_minCompound(B,R);
D3=max_minCompound(C,R);
%输出D模糊集合
D=min(min(D1,D2),D3)
可知结果D与以前相同