📄 qsgzqd起始规则确定(488个).m
字号:
function [R1,Rshu,qiangdu]=qsgzqd(Datax1,xcan,R)
% this function getout the genoral rules and it's number and strength
% Datax1 is the input data
% xcan is the first param of the mf
% R is the general rules maxtri
length1=size(R,1);
qiangdu=zeros(1,500);
qiangdu1=zeros(1,length1);
n=1; % 模糊规则数
flag=0;
Rshu=zeros(1,500);
Rshu(1)=1;
% 给出第一条模糊规则
R1(1,:)=R(1,:);
qiangdu(1)=gaussmf(Datax1(1,1),xcan(R(1,1),:))*gaussmf(Datax1(1,2),xcan(R(1,2),:)) ...
*gaussmf(Datax1(1,3),xcan(R(1,3),:))*gaussmf(Datax1(1,4),xcan(R(1,4),:)) ...
*gaussmf(Datax1(1,5),xcan(R(1,5),:))*gaussmf(Datax1(1,6),xcan(R(1,6),:)) ...
*gaussmf(Datax1(1,7),xcan(R(1,7),:))*gaussmf(Datax1(1,8),xcan(R(1,8),:));
for i=2:length1
i
P(i,:)=R(i,:);
qiangdu1(i)=gaussmf(Datax1(i,1),xcan(R(i,1),:))*gaussmf(Datax1(i,2),xcan(R(i,2),:)) ...
*gaussmf(Datax1(i,3),xcan(R(i,3),:))*gaussmf(Datax1(i,4),xcan(R(i,4),:)) ...
*gaussmf(Datax1(i,5),xcan(R(i,5),:))*gaussmf(Datax1(i,6),xcan(R(i,6),:)) ...
*gaussmf(Datax1(i,7),xcan(R(i,7),:))*gaussmf(Datax1(i,8),xcan(R(i,8),:));
for j=1:n
%判断规则是否相同,若相同强度大为规则强度
Tf=(P(i,:)==R1(j,:));
if Tf==[1 1 1 1 1 1 1 1]
flag=1; % 规则相同判断
R1(j,:)=P(i,:);
Rshu(j)=Rshu(j)+1;
if qiangdu1(i)>qiangdu(j)
qiangdu(j)=qiangdu1(i);
end
break
else flag=0;
end
end
if flag==0
n=n+1;
R1(n,:)=P(i,:); %规则不同,增加新规则
Rshu(n)=1;
qiangdu(n)=qiangdu1(i);
end
end
y=size(R1,1);
Rshu=Rshu(1:y);
qiangdu=qiangdu(1:y);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -