导航:首页 > 编程大全 > 模糊神经网络matlab

模糊神经网络matlab

发布时间:2023-07-27 10:51:42

㈠ 用MATLAB做的模糊神经网络代码

您好,是这样的:
经过训练后的参数比较差,用原数据输入训练好的网络,得出结果和要的结果误差很大,不明白是怎么回事?

还有要是多输入多输出这段程序该怎么改?模糊神经网络可以用matlab工具箱实现吗?

还有输入数据差别比较大(就是大小差异大)是不是要进行归一化再学习训练呢?

求解,求解答!

对于你的帮助不胜感激!

clear all
clc
close all
tic,
%[x,y]=data;
x=[1 2 3 4 5 6 7 8;
-1 -2 -3 -4 -5 -6 -7 -8];
y=[2 3 4 5 6 7 8 9]; %%%%%--数据显示,输入为-两输入,输出为-单输出。--------样本为p2组
[p1,p2]=size(x);

% 隶属度函数个数
k=7;
% 初始化四个隶属度函数的参数A,B及输出层初始权值W
for i=1:p1;
for j=1:k;
m(i,j)=1+0.6*rand(1);
b(i,j)=1+0.6*rand(1);
end
end
for j=1:k*k;
w(j)=1+rand(1);
end
%%%---推理计算输出值
for q=1:p2;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%-----用同一隶属度参数对 输入样本 X 累计计算
% 选用高斯函数作为隶属度,求隶属度,共 size(x,2)+k 个。x(1) K个,x(2) K个
for i=1:p1;
for j=1:k;
u(i,j)=gaussmf(x(i,q),[m(i,j),b(i,j)]);
end
end

% 模糊推理计算:a21,a22.几个隶属度函数,得出几个值,此处已知输入为2
%%%%----由以前的取小做法改为相乘—prod(x,1) or prod(x,2)———
v=[];
for i=1:k
for j=1:k
v=[v,u(1,i)*u(2,j)];
end
end

% 归一化计算模糊推理的值;相当于已经除去了经典去模糊输出的分母值
for i=1:length(v);
v1(i)=v(i)/sum(v);
end
% 系统输出
% out1(q)=w*v';
% e(q)=(y(q)-out1(q));
% end
% out=out1
out1(q)=w*v1';
e(q)=y(q)-out1(q);
end
out=out1;

%- 三。参数修正过程。 增加方式,非批处理方式迭代
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%-----------------------------误差反向传播过程--------------------------------------------
% 取误差函数:E=(1/2)*sumsqr(t-y)
E=(1/2)*sumsqr(y-out);
EE=E;
% e=sum(y-out)
lr=0.3; % c2=zeros(2,2);
%%%%----------------------------------------误差反传后的参数修正过程-------------------
r=1; %
p=1;
s=1000; %
% e(r)=y(r)-out(r);
while p<=s & EE>0.05
%%%%%%%%%%%%%_____隶属度参数 M. B 输出层权值参数 W 的修正过程_____%%%%%%%%%%%%
%%1.--W
wc=zeros(1,k*k);
for i=1:k*k;
wc(i)=-lr*e(r)*v1(i);
end
%%2.--M
mc=zeros(p1,k);
for i=1:p1;
for j=1:k;
mc(i,j)=2*lr*e(r) * w(j) * (v(j)/u(i,j)) * exp(-((x(i,r)-m(i,j)).^2)/(b(i,j).^2))* (x(i,r)-m(i,j))/(b(i,j).^2);
end
end
%%3.--B
bc=zeros(p1,k);
for i=1:p1;
for j=1:k;
bc(i,j)=2*lr*e(r)* w(j) * (v(j)/u(i,j)) * exp(-((x(i,r)-m(i,j)).^2)/(b(i,j).^2)) * ((x(i,r)-m(i,j)).^2)/(b(i,j).^3);
end
end
% 4.参数修正 m b w
m=m-mc;
b=b-bc;
w=w-wc;
%%%%%%%%%%%_______利用修正后的参数重新计算_____________%%%%%%%%%%%%%%%%%%%%%
% 5.利用修正过的参数重新计算输出
for q=1:p2;
for i=1:p1;
for j=1:k;
u(i,j)=gaussmf(x(i,q),[m(i,j),b(i,j)]);
end
end
v=[];
for i=1:7
for j=1:7
v=[v,u(1,i)*u(2,j)];
end
end

% 归一化计算模糊推理的值;相当于已经除去了经典去模糊输出的分母值
for i=1:length(v)
v1(i)=v(i)/sum(v);
end
out1(q)=w*v1';
end
out=out1;
p=p+1;
EE=(1/2)*sumsqr(y-out);
E(p)=EE;
r=r+1;
if r>p2
r=1;
end
e(r)=(y(r)-out(r));
end
%%%%%%%%%%%%%%%%%%%________________当误差或迭代步数满足要求后得到结果_________________%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
m,b,w,E_out=EE,e
epoch=1:size(E,2);
figure
plot(epoch,E,'-r');
% plot(epoch,out(1),'b');
% axis([0 1.5*s min(E) max(E)]);
% set(gca,'fontsize',8);
% set(gca,'xtick',0:s/10:1.5*s);
%set(gca,'ytick',1e-30:1e5:1e5);
%set(gcf,'color','b')
title('误差变化曲线');xlabel('步数');ylabel('误差');
toc
%% %% 泛化过程

㈡ MATLAB神经网络编程的内容简介

《MATLAB神经网络编程》结合神经网络的概念、理论和应用,以MATLAB为平台,系统地介绍了神经网络工具箱中的前向型神经网络、局部型神经网络、反馈型神经网络、竞争型神经网络、神经网络控制的综合应用、神经网络在Simulink中的应用、神经网络的模糊控制及其自定义网络等内容。《MATLAB神经网络编程》重点是运用MATLAB神经网络工具箱介绍神经网络分析研究中的各种概念、理论、方法、算法及其实现。《MATLAB神经网络编程》内容安排合理,理论结合实际,同时作者列举了其总结的大量应用实例。《MATLAB神经网络编程》讲述的各种统计理论和方法浅显易懂,并均能在实际生活中找到应用对象。《MATLAB神经网络编程》可以作为广大在校本科生和研究生的学习用书,也可以作为广大科研人员、学者、工程技术人员的参考用书。

㈢ MATLAB模糊神经网络的模糊规则怎么确定和输入

1、表5.1是根据经验规则
2、一条条的敲、可以不用自带的工具箱直接编m文件编写响应的程序。

㈣ matlab 有没有模糊神经网络工具箱

有,工具箱名称:anfisedit,以下是一些使用说明。
1. GUI工具
Anfisedit 打开ANFIS编辑器回GUI、Fuzzy 调用基本答FIS编辑器、Mfedit 隶属度函数编辑器、Ruleedit 规则编辑器和语法解析器、Ruleview 规则观察器和模糊推理方框图、Surfview输出曲面观察器
2. 隶属度函数
dsigmf 两个sigmoid型隶属度函数之差组成的隶属度函数、gauss2mf 建立两边型高斯隶属度函数、gaussmf 建立高斯曲线隶属度函数、gbellmf 建立一般钟型隶属度函数、pimf 建立Π型隶属度函数、psigmf 通过两个sigmoid型隶属度函数的乘积构造隶属度函数、smf 建立S-型隶属度函数、sigmf
建立Sigmoid型隶属度函数、trapmf 建立梯形隶属度函数、trimf 建立三角形隶属度函数、zmf 建立Z-型隶属度函数

㈤ matlab 在神经网络 模糊控制

我的毕设只用把PID和模糊PID相比较
常规PID,用Matlab里的Simulink模块仿真,建立你要做的动力学模型的传函或者状态空间。PID参数调节可用临界比度法。
模糊PID就麻烦了,打开Matlab中FIS模块,一般都用二阶模糊?输入E,EC的隶属函数,一般为高斯,和输出模糊Kp,Ki,Kd,一般为三角。还要整定模糊规则,再加载到Simulink里。调节模糊因子Gu,Ge,Gec,设置模糊PID的参数。
总之,你这个问题在白度知道里很难说清楚。

㈥ matlab中神经网络的数据归一化处理就是相当于模糊化吗

1、线性函数转换,表达式如下:
y=(x-MinValue)/(MaxValue-MinValue)
说明:x、y分别为转换前、后的值,MaxValue、MinValue分别为样本的最大值和最小值。
2、对数函数转换,表达式如下:
y=log10(x)
说明:以10为底的对数函数转换。
3、反余切函数转换,表达式如下:
y=atan(x)*2/PI
归一化是为了加快训练网络的收敛性,可以不进行归一化处理
归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在-1--+1之间是统计的坐标分布。归一化有同一、统一和合一的意思。无论是为了建模还是为了计算,首先基本度量单位要同一,神经网络是以样本在事件中的统计分别几率来进行训练(概率计算)和预测的,归一化是同一在0-1之间的统计概率分布;
当所有样本的输入信号都为正值时,与第一隐含层神经元相连的权值只能同时增加或减小,从而导致学习速度很慢。为了避免出现这种情况,加快网络学习速度,可以对输入信号进行归一化,使得所有样本的输入信号其均值接近于0或与其均方差相比很小。
归一化是因为sigmoid函数的取值是0到1之间的,网络最后一个节点的输出也是如此,所以经常要对样本的输出归一化处理。所以这样做分类的问题时用[0.9 0.1 0.1]就要比用[1 0 0]要好。
但是归一化处理并不总是合适的,根据输出值的分布情况,标准化等其它统计变换方法有时可能更好。
关于用premnmx语句进行归一化:
premnmx语句的语法格式是:[Pn,minp,maxp,Tn,mint,maxt]=premnmx(P,T)
其中P,T分别为原始输入和输出数据,minp和maxp分别为P中的最小值和最大值。mint和maxt分别为T的最小值和最大值。
premnmx函数用于将网络的输入数据或输出数据进行归一化,归一化后的数据将分布在[-1,1]区间内。
我们在训练网络时如果所用的是经过归一化的样本数据,那么以后使用网络时所用的新数据也应该和样本数据接受相同的预处理,这就要用到tramnmx。
下面介绍tramnmx函数:
[Pn]=tramnmx(P,minp,maxp)
其中P和Pn分别为变换前、后的输入数据,maxp和minp分别为premnmx函数找到的最大值和最小值。
(by terry2008)
matlab中的归一化处理有三种方法
1. premnmx、postmnmx、tramnmx
2. restd、poststd、trastd
3. 自己编程
具体用那种方法就和你的具体问题有关了
(by happy)
pm=max(abs(p(i,:))); p(i,:)=p(i,:)/pm;

for i=1:27
p(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));
end 可以归一到0 1 之间
0.1+(x-min)/(max-min)*(0.9-0.1)其中max和min分别表示样本最大值和最小值。
这个可以归一到0.1-0.9

阅读全文

与模糊神经网络matlab相关的资料

热点内容
儿童编程的app软件哪个更好一些 浏览:220
有什么好的免费视频电影网站 浏览:306
文件保存后在哪里可以找到 浏览:478
docm是什么文件 浏览:142
js可以设置emptytext 浏览:479
从数据字典中查询具体是什么表 浏览:608
触摸屏通道导入总是出现文件路径 浏览:363
怎么给app改大图标 浏览:289
怎么新建数据库用户 浏览:449
win10家庭版文件夹共享 浏览:291
win10更改系统繁体 浏览:541
wifi密码只有六位数 浏览:814
联通app怎么控制家里的宽带 浏览:567
贪食首饰升级材料 浏览:946
围棋网络教学 浏览:212
java构造函数线程安全 浏览:151
苹果时间怎么跑到侧面去了 浏览:34
微信动态表情喷血 浏览:318
ps部分文件损坏无法解压怎么办 浏览:724
部落冲突4本对应升级表 浏览:180

友情链接