%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% For plotting training data from the "unknown function" G(x,z)
%
% By: Kevin Passino
% Version: 1/13/99
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear
% For the M=7 case
x7=-6:2:6;
M=length(x7)
for i=1:M,
G7(i)=exp(-50*(x7(i)-1)^2)-0.5*exp(-100*(x7(i)-1.2)^2)+atan(2*x7(i))+2.15+...
0.2*exp(-10*(x7(i)+1)^2)-0.25*exp(-20*(x7(i)+1.5)^2)+0.1*exp(-10*(x7(i)+2)^2)-0.2*exp(-10*(x7(i)+3)^2);
if x7(i) >= 0
G7(i)=G7(i)+0.1*(x7(i)-2)^2-0.4;
end
end
% For the M=121 case
x121=-6:0.1:6;
M=length(x121)
for i=1:M,
z(i)=0.15*(rand-0.5)*2; % Define the auxiliary variable
G121(i)=exp(-50*(x121(i)-1)^2)-0.5*exp(-100*(x121(i)-1.2)^2)+atan(2*x121(i))+2.15+...
0.2*exp(-10*(x121(i)+1)^2)-0.25*exp(-20*(x121(i)+1.5)^2)+0.1*exp(-10*(x121(i)+2)^2)-0.2*exp(-10*(x121(i)+3)^2);
if x121(i) >= 0
G121(i)=G121(i)+0.1*(x121(i)-2)^2-0.4;
end
G121n(i)=G121(i)+z(i); % Adds in the influence of the auxiliary variable
% fpoly(i)=0.6+0.1*x(i);
end
% Next, plot the functions:
figure(1)
plot(x7,G7,'ko')
xlabel('x(i)')
ylabel('y(i)=G(x(i))')
title('M=7')
grid
axis([min(x7) max(x7) 0 max(G7)])
figure(2)
plot(x121,G121,'ko')
xlabel('x(i)')
ylabel('y(i)=G(x(i))')
title('M=121')
grid
axis([min(x121) max(x121) 0 max(G121)])
figure(3)
plot(x121,G121n,'ko')
xlabel('x(i)')
ylabel('y(i)=G(x(i),z(i))')
title('M=121')
grid
axis([min(x121) max(x121) 0 max(G121)])
% Next, plot some approximator fits to the function
% First, a line
for i=1:M,
Flinear(i)=((4.5-0.5)/(6-(-6)))*x121(i)+2.5;
end
figure(4)
plot(x121,G121n,'ko',x121,Flinear,'k')
xlabel('x(i)')
ylabel('y(i)=G(x(i),z(i)), and line')
title('Linear approximation')
grid
axis([min(x121) max(x121) 0 max(G121)])
% Next, a polynomial (parabola)
for i=1:M,
Fpoly(i)=0.6+0.035*(x121(i)+6)^2;
end
figure(5)
plot(x121,G121n,'ko',x121,Fpoly,'k')
xlabel('x(i)')
ylabel('y(i)=G(x(i),z(i)), and parabola')
title('Polynomial approximation')
grid
axis([min(x121) max(x121) 0 max(G121)])
% Next, a single hidden layer perceptron, n1=1
w1=[1.5]';
b1=0;
w=[3]';
b=0.6;
for i=1:M,
phi1=inv(1+exp(-b1-w1*x121(i)));
phi=[phi1]';
Fmlp(i)=b+w'*phi;
end
figure(6)
plot(x121,G121n,'ko',x121,Fmlp,'k')
xlabel('x(i)')
ylabel('y(i)=G(x(i),z(i)), and perceptron output')
title('Neural network approximation, one neuron')
grid
axis([min(x121) max(x121) 0 max(G121)])
% Next, a single hidden layer perceptron, n1=2
w1=[1.5]';
b1=0;
w2=[1.25]';
b2=-6;
w=[3 1]';
b=0.6;
for i=1:M,
phi1=inv(1+exp(-b1-w1*x121(i)));
phi2=inv(1+exp(-b2-w2*x121(i)));
phi=[phi1 phi2]';
Fmlp(i)=b+w'*phi;
end
figure(7)
plot(x121,G121n,'ko',x121,Fmlp,'k')
xlabel('x(i)')
ylabel('y(i)=G(x(i),z(i)), and perceptron output')
title('Neural network approximation, two neurons')
grid
axis([min(x121) max(x121) 0 max(G121)])
% Next, we plot the premise membership functions for
% a Takagi-Sugeno fuzzy system approximator
c11=-3.5;
sigma11=0.8;
c12=-0.25;
sigma12=0.6;
c13=2;
sigma13=0.4;
c14=4.5;
sigma14=0.8;
for i=1:M,
mu1(i)=exp(-0.5*((x121(i)-c11)/sigma11)^2);
mu2(i)=exp(-0.5*((x121(i)-c12)/sigma12)^2);
mu3(i)=exp(-0.5*((x121(i)-c13)/sigma13)^2);
mu4(i)=exp(-0.5*((x121(i)-c14)/sigma14)^2);
denominator(i)=mu1(i)+mu2(i)+mu3(i)+mu4(i); % Used below
end
figure(8)
plot(x121,G121n,'ko',x121,mu1,'k',x121,mu2,'k',x121,mu3,'k',x121,mu4,'k')
xlabel('x(i)')
ylabel('y(i)=G(x(i),z(i)) and premise membership function values')
title('Training data and premise membership functions')
grid
% Next, we plot the basis functions for
% a Takagi-Sugeno fuzzy system approximator
for i=1:M,
xi1(i)=mu1(i)/denominator(i);
xi2(i)=mu2(i)/denominator(i);
xi3(i)=mu3(i)/denominator(i);
xi4(i)=mu4(i)/denominator(i);
end
figure(9)
plot(x121,G121n,'ko',x121,xi1,'k',x121,xi2,'k',x121,xi3,'k',x121,xi4,'k')
xlabel('x(i)')
ylabel('y(i)=G(x(i),z(i)) and basis function values')
title('Training data and basis functions')
grid
% Next, we plot the Takagi-Sugeno fuzzy system approximator
a10=1;
a11=0.5/6;
a20=2.25;
a21=4.4/4;
a30=2.9;
a31=1/12;
a40=1.3;
a41=4.8/8;
for i=1:M,
g1(i)=a10+a11*x121(i);
g2(i)=a20+a21*x121(i);
g3(i)=a30+a31*x121(i);
g4(i)=a40+a41*x121(i);
numerator=g1(i)*mu1(i)+g2(i)*mu2(i)+g3(i)*mu3(i)+g4(i)*mu4(i);
Fts(i)=numerator/(mu1(i)+mu2(i)+mu3(i)+mu4(i));
end
figure(10)
plot(x121,G121n,'ko',x121,Fts,'k')
xlabel('x(i)')
ylabel('y(i)=G(x(i),z(i)), and fuzzy system output')
title('Takagi-Sugeno approximation')
grid
axis([min(x121) max(x121) 0 max(G121)])
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% End of program
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
unknownfunc.rar_approximator_fuzzy approximator_neural fuzzy_unk
版权申诉
182 浏览量
2022-07-14
20:55:17
上传
评论
收藏 1KB RAR 举报
周楷雯
- 粉丝: 80
- 资源: 1万+
最新资源
- 下载安装这个软件.apk
- 【数据集详细解释及案例分析】数据集详细解释及案例分析
- 基于SHT71温湿度传感器、STM32F103C8T6、LCD1602温湿度采集显示系统proteus仿真设计
- 基于TH02温湿度传感器、STM32F103C8T6、LCD1602、FREERTOS的温湿度采集系统proteus仿真设计
- 【TCP-IP协议详细解释及案例分析】TCP-IP协议详细解释及案例分析
- 一文搞懂 LSTM(长短期记忆网络).rar
- 【autosar简介及基本案例解析】autosar简介及基本案例解析
- java模拟斗地主洗牌发牌
- springboot+vue登录系统 vue部分
- 常用常见 SQL语句语法
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈