%通用感應器神經網絡。

P=[-0.5 -0.5 0.3 -0.1 -40;-0.5 0.5 -0.5 1 50];%輸入向量

T=[1 1 0 0 1];%期望輸出

plotpv(P,T);%描繪輸入點圖像

net=newp([-40 1;-1 50],1);%生成網絡,其中參數分別為輸入向量的范圍和神經元感應器數量

hold on

linehandle=plotpc(net.iw{1},net.b{1});

net.adaptparam.passes=3;

for a=1:25%訓練次數

[net,Y,E]=adapt(net,P,T);

linehandle=plotpc(net.iw{1},net.b{1},linehandle);

drawnow;

end

%通用newlin程序

%通用線性網絡進行預測

time=0:0.025:5;

T=sin(time*4*pi);

Q=length(T);

P=zeros(5,Q);%P中存儲信號T的前5(可變,根據需要而定)次值,作為網絡輸入。

P(1,2:Q)=T(1,1:(Q-1));

P(2,3:Q)=T(1,1:(Q-2));

P(3,4:Q)=T(1,1:(Q-3));

P(4,5:Q)=T(1,1:(Q-4));

P(5,6:Q)=T(1,1:(Q-5));

plot(time,T)%繪制信號T曲線

xlabel('時間');

ylabel('目標信號');

title('待預測信號');

net=newlind(P,T);%根據輸入和期望輸出直接生成線性網絡

a=sim(net,P);%網絡測試

figure(2)

plot(time,a,time,T,'+')

xlabel('時間');

ylabel('輸出-目標+');

title('輸出信號和目標信號');

e=T-a;

figure(3)

plot(time,e)

hold on

plot([min(time) max(time)],[0 0],'r:')%可用plot(x,zeros(size(x)),'r:')代替

hold off

xlabel('時間');

ylabel('誤差');

title('誤差信號');

%通用BP神經網絡

P=[-1 -1 2 2;0 5 0 5];

t=[-1 -1 1 1];

net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingd');

%輸入參數依次為:'樣本P范圍',[各層神經元數目],{各層傳遞函數},'訓練函數'

%訓練函數traingd--梯度下降法,有7個訓練參數.

%訓練函數traingdm--有動量的梯度下降法,附加1個訓練參數mc(動量因子,缺省為0.9)

%訓練函數traingda--有自適應lr的梯度下降法,附加3個訓練參數:lr_inc(學習率增長比,缺省為1.05;

%                 lr_dec(學習率下降比,缺省為0.7);max_perf_inc(表現函數增加最大比,缺省為1.04)

%訓練函數traingdx--有動量的梯度下降法中賦以自適應lr的方法,附加traingdm和traingda的4個附加參數

%訓練函數trainrp--彈性梯度下降法,可以消除輸入數值很大或很小時的誤差,附加4個訓練參數:

%             delt_inc(權值變化增加量,缺省為1.2);delt_dec(權值變化減小量,缺省為0.5);

%             delta0(初始權值變化,缺省為0.07);deltamax(權值變化最大值,缺省為50.0)

%             適合大型網絡

%訓練函數traincgf--Fletcher-Reeves共軛梯度法;訓練函數traincgp--Polak-Ribiere共軛梯度法;

%訓練函數traincgb--Powell-Beale共軛梯度法

%共軛梯度法占用存儲空間小,附加1訓練參數searchFcn(一維線性搜索方法,缺省為srchcha);缺少1個訓練參數lr

%訓練函數trainscg--量化共軛梯度法,與其他共軛梯度法相比,節約時間.適合大型網絡

%             附加2個訓練參數:sigma(因為二次求導對權值調整的影響參數,缺省為5.0e-5);

%                            lambda(Hessian陣不確定性調節參數,缺省為5.0e-7)

%             缺少1個訓練參數:lr

%訓練函數trainbfg--BFGS擬牛頓回退法,收斂速度快,但需要更多內存,與共軛梯度法訓練參數相同,適合小網絡

%訓練函數trainoss--一步正割的BP訓練法,解決了BFGS消耗內存的問題,與共軛梯度法訓練參數相同

%訓練函數trainlm--Levenberg-Marquardt訓練法,用於內存充足的中小型網絡

net=init(net);

net.trainparam.epochs=300;   %最大訓練次數(前缺省為10,自trainrp后,缺省為100)

net.trainparam.lr=0.05;     %學習率(缺省為0.01)

net.trainparam.show=50;     %限時訓練迭代過程(NaN表示不顯示,缺省為25)

net.trainparam.goal=1e-5; %訓練要求精度(缺省為0)

%net.trainparam.max_fail     最大失敗次數(缺省為5)

%net.trainparam.min_grad     最小梯度要求(前缺省為1e-10,自trainrp后,缺省為1e-6)

%net.trainparam.time       最大訓練時間(缺省為inf)

[net,tr]=train(net,P,t);     %網絡訓練

a=sim(net,P)                 %網絡仿真

%通用徑向基函數網絡——

%其在逼近能力,分類能力,學習速度方面均優於BP神經網絡

%在徑向基網絡中,徑向基層的散步常數是spread的選取是關鍵

%spread越大,需要的神經元越少,但精度會相應下降,spread的缺省值為1

%可以通過net=newrbe(P,T,spread)生成網絡,且誤差為0

%可以通過net=newrb(P,T,goal,spread)生成網絡,神經元由1開始增加,直到達到訓練精度或神經元數目最多為止

%GRNN網絡,迅速生成廣義回歸神經網絡(GRNN)

P=[4 5 6];

T=[1.5 3.6 6.7];

net=newgrnn(P,T);

%仿真驗證

p=4.5;

v=sim(net,p)

%PNN網絡,概率神經網絡

P=[0 0 ;1 1;0 3;1 4;3 1;4 1;4 3]';

Tc=[1 1 2 2 3 3 3];

%將期望輸出通過ind2vec()轉換,並設計、驗證網絡

T=ind2vec(Tc);

net=newpnn(P,T);

Y=sim(net,P);

Yc=vec2ind(Y)

%嘗試用其他的輸入向量驗證網絡

P2=[1 4;0 1;5 2]';

Y=sim(net,P2);

Yc=vec2ind(Y)

%應用newrb()函數構建徑向基網絡,對一系列數據點進行函數逼近

P=-1:0.1:1;

T=[-0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600 0.4609...

0.1336 -0.2013 -0.4344 -0.500 -0.3930 -0.1647 -0.0988...

0.3072 0.3960 0.3449 0.1816 -0.0312 -0.2189 -0.3201];

%繪制訓練用樣本的數據點

plot(P,T,'r*');

title('訓練樣本');

xlabel('輸入向量P');

ylabel('目標向量T');

%設計一個徑向基函數網絡,網絡有兩層,隱層為徑向基神經元,輸出層為線性神經元

%繪制隱層神經元徑向基傳遞函數的曲線

p=-3:.1:3;

a=radbas(p);

plot(p,a)

title('徑向基傳遞函數')

xlabel('輸入向量p')

%隱層神經元的權值、閾值與徑向基函數的位置和寬度有關,只要隱層神經元數目、權值、閾值正確,可逼近任意函數

%例如

a2=radbas(p-1.5);

a3=radbas(p+2);

a4=a+a2*1.5+a3*0.5;

plot(p,a,'b',p,a2,'g',p,a3,'r',p,a4,'m--')

title('徑向基傳遞函數權值之和')

xlabel('輸入p');

ylabel('輸出a');

%應用newrb()函數構建徑向基網絡的時候,可以預先設定均方差精度eg以及散布常數sc

eg=0.02;

sc=1;   %其值的選取與最終網絡的效果有很大關系,過小造成過適性,過大造成重疊性

net=newrb(P,T,eg,sc);

%網絡測試

plot(P,T,'*')

xlabel('輸入');

X=-1:.01:1;

Y=sim(net,X);

hold on

plot(X,Y);

hold off

legend('目標','輸出')

%應用grnn進行函數逼近

P=[1 2 3 4 5 6 7 8];

T=[0 1 2 3 2 1 2 1];

plot(P,T,'.','markersize',30)

axis([0 9 -1 4])

title('待逼近函數')

xlabel('P')

ylabel('T')

%網絡設計

%對於離散數據點,散布常數spread選取比輸入向量之間的距離稍小一些

spread=0.7;

net=newgrnn(P,T,spread);

%網絡測試

A=sim(net,P);

hold on

outputline=plot(P,A,'o','markersize',10,'color',[1 0 0]);

title('檢測網絡')

xlabel('P')

ylabel('T和A')

%應用pnn進行變量的分類

P=[1 2;2 2;1 1]; %輸入向量

Tc=[1 2 3];       %P對應的三個期望輸出

%繪制出輸入向量及其相對應的類別

plot(P(1,:),P(2,:),'.','markersize',30)

for i=1:3

text(P(1,i)+0.1,P(2,i),sprintf('class %g',Tc(i)))

end

axis([0 3 0 3]);

title('三向量及其類別')

xlabel('P(1,:)')

ylabel('P(2,:)')

%網絡設計

T=ind2vec(Tc);

spread=1;

net=newgrnn(P,T,speard);

%網絡測試

A=sim(net,P);

Ac=vec2ind(A);

%繪制輸入向量及其相應的網絡輸出

plot(P(1,:),P(2,:),'.','markersize',30)

for i=1:3

text(P(1,i)+0.1,P(2,i),sprintf('class %g',Ac(i)))

end

axis([0 3 0 3]);

title('網絡測試結果')

xlabel('P(1,:)')

ylabel('P(2,:)')

matlab cgf sc 未定义,matlab通用神經網絡代碼相关推荐

  1. newff matlab使用例子,matlab神經網絡newff函數的用法

    設[P,T]是訓練樣本,[X,Y]是測試樣本: net=newrb(P,T,err_goal,spread); %建立網絡 q=sim(net,p); e=q-T; plot(p,q); %畫訓練誤差 ...

  2. matlab工具函数newp,常用的 MATLAB 神經網絡工具箱函數

    列表中所列出的函數適用於 MATLAB5.3 以上版本,若需要進一步的了解,請參閱 MATLAB 的幫助文檔. 1. 網絡創建函數 newp   創建感知器網絡 newlind   設計一線性層 ne ...

  3. matlab 中数据未定义,matlab总是出现参数未定义

    matlab 曲线拟合参数 1.你给的数据有问题,t有11个点,而R只有10个点.暂按照删去t的最后一个点考虑.2.拟合和很多因素有关,比如初值.拟合函数的选择.算法设置等.3.按现有程序拟合的结果: ...

  4. matlab 函数 未定义,matlab一直说我未定义函数或变量x怎么办?

    你有没有给x赋值?没有的话,函数g(x)没法调用参数x就出错了.例如试试:12x = 1:10;g(x)www.mh456.com防采集. 首先你这个函数写的是2113没问题,我感觉你的5261基础不 ...

  5. matlab fseek未定义,matlab fread fseek

    MATLAB 的演示程序 设置或查询 MATLAB 路径 2.有关文件及其操作的语句 cd delete unix fopen fread fscanf fgetl ferror fseek prew ...

  6. matlab 不允许函数定义,matlab中函数定义在脚本中不允许是什么意思

    [提问前请先在知道搜索,谢谢] MATLAB是一门计算机编程语言,取名来源于Matrix Laboratory,本意是专门以矩阵的方式来处理计算机数据,它把数值计算和可视化环境集成到一起,非常直观,而 ...

  7. matlab 不允许函数定义,MATLAB中此上下文中不允许出现函数定义,急求~

    点击查看MATLAB中此上下文中不允许出现函数定义,急求~具体信息 答:从你讲的问题,虽然没讲太清楚,但我推测,你可能写了个脚本程序文件,其中定义了子函数,在运行时就弹出了这个提示.一般情况下,在函数 ...

  8. matlab二维怎么定义,matlab中如何定义一个10*2的二维数组,用来储存后面算出的数值...

    答:可以先定义,这样可以预先分配空间,B = zeros(20, 2); 也可以运算出一个结果往数组里增添1列,动态来增加. matlab二维数组的创建: 二维数组实际上也是一个矩阵.应此直接创建一个 ...

  9. matlab错误ceq未赋值,matlab优化问题(1)

    第5章 优化问题 5.1 线性规划问题 线性规划问题(Linear Programming)是目标函数和约束条件均为线性函数的问题,标准形式为: 其它形式的线性规划问题都可经过适当变换化为此标准形式. ...

最新文章

  1. 用于判断用户注册时,密码强度的JS代码。
  2. 【mysql】sql查询速度不变?不同数据量下,查询速度不会变化的问题
  3. [python]两种编程思维--面向过程和面向对象
  4. UA MATH567 高维统计IV Lipschitz组合10 随机矩阵的Bernstein不等式
  5. JAVA返回指定字符串的长度,Java截取指定字节长度的字符串
  6. 数据结构与算法分析:C语言描述(原书第2版 简体中文版!!!) PDF+源代码+习题答案...
  7. scrapy 动态IP、随机UA、验证码
  8. 硬件:电脑DNS出现错误对应的解决方案
  9. Emlog百度快速收录插件
  10. python是什么语言-Python是什么?为什么现在越来越多的人选择学习Python语言
  11. matlab生成西门子plc源文件,【图】西门子step7功能块的属性及生成源文件的步骤...
  12. 哪些好的绘图软件和绘图工具?
  13. 几种工具反编译被编译好的DLL文件
  14. Mac新手需掌握的操作技巧——屏幕篇
  15. 【学习记录】【python】【tkinter】自学tkinter的简要记录
  16. 学而思王帆初中语文教学视频
  17. 使用Java分割大文件
  18. html audio缓冲效果实现
  19. python 工资条_当财务部的人会编程,会发生什么?Python实现自动化群发工资条...
  20. Python——下载音乐(干货)

热门文章

  1. 升级至 vCenter Server 6.5 的最佳实践 (2147686)
  2. Redis学习总结(10)——缓存雪崩、缓存穿透、缓存并发、缓存预热、缓存更新、缓存降级、缓存算法的概念及解决思路总结
  3. Redis学习总结(4)——Spring Data操作Redis
  4. Spring Boot学习总结(2)——Spring Boot整合Jsp
  5. java 编程字体_Java 是否可以为整个应用程序设置自定义字体?
  6. python万年历实验报告_Python实现的简单万年历例子分享
  7. vs2008调试c语言,VS2008调试Release程序-Dump文件方式_C/C++技术分享_看流星社区 www.kanliuxing.com...
  8. Docker系列(二):Docker安装
  9. ERROR ITMS-90206:Invalid Bundle. The bundle at ‘xx.app/xx/xx.framework' contan
  10. SpringMVC 中整合JSON、XML视图二