自适应模糊神经网络算法,matlab模糊神经网络实例
用MATLAB做的模糊神經網絡代碼
您好,是這樣的:經過訓練后的參數比較差,用原數據輸入訓練好的網絡,得出結果和要的結果誤差很大,不明白是怎么回事?還有要是多輸入多輸出這段程序該怎么改?模糊神經網絡可以用matlab工具箱實現嗎?
還有輸入數據差別比較大(就是大小差異大)是不是要進行歸一化再學習訓練呢?求解,求解答!對于你的幫助不勝感激!
clear allclcclose alltic,%[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及輸出層初始權值Wfor i=1:p1; for j=1:k;m(i,j)=1+0.6*rand(1);b(i,j)=1+0.6*rand(1);endendfor 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)]);endend% 模糊推理計算:a21,a22.幾個隸屬度函數,得出幾個值,此處已知輸入為2%%%%----由以前的取小做法改為相乘—prod(x,1) or prod(x,2)———v=[];for i=1:kfor j=1:k v=[v,u(1,i)*u(2,j)];endend% 歸一化計算模糊推理的值;相當于已經除去了經典去模糊輸出的分母值for i=1:length(v);v1(i)=v(i)/sum(v);end% 系統輸出% out1(q)=w*v';% e(q)=(y(q)-out1(q));% end% out=out1out1(q)=w*v1';e(q)=y(q)-out1(q);endout=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 p0.05%%%%%%%%%%%%%_____隸屬度參數 M. B 輸出層權值參數 W 的修正過程_____%%%%%%%%%%%%%%1.--Wwc=zeros(1,k*k);for i=1:k*k;wc(i)=-lr*e(r)*v1(i);end%%2.--Mmc=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);endend%%3.--Bbc=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);endend% 4.參數修正 m b wm=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)]);endendv=[];for i=1:7for j=1:7 v=[v,u(1,i)*u(2,j)];endend% 歸一化計算模糊推理的值;相當于已經除去了經典去模糊輸出的分母值for i=1:length(v)v1(i)=v(i)/sum(v);endout1(q)=w*v1';endout=out1;p=p+1;EE=(1/2)*sumsqr(y-out);E(p)=EE;r=r+1;if r>p2r=1;ende(r)=(y(r)-out(r));end%%%%%%%%%%%%%%%%%%%________________當誤差或迭代步數滿足要求后得到結果_________________%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%m,b,w,E_out=EE,eepoch=1:size(E,2);figureplot(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大神幫幫忙,做模糊神經網絡預測
用matlabR2014a軟件,可以進行BP模糊神經網絡預測寫作貓。
現以人口預測為例說明其實現過程:% 清空環境變量clc,clf,close all% x為原始序列t=1990:2009; ?%年份x=[11 28 30 42 44 56 49 60 50 63 56 74 76 65 92 105 124 117 132 128]; ?%某地區人口數,要預測2010-2016年的某地區人口數。
t=1:length(x);lag=2;?fn=length(t);[f_out,iinput]=BP(x,lag,fn); %調用神經網絡函數[x' iinput']R2=corrcoef(x,iinput)%預測年份或某一時間段t1=length(x)+1:length(x)+7;%預測步數為fnfn=length(t1); ? [f_out,iinput]=BP(x,lag,fn);P=vpa(f_out,5);t=1990:2009;t1=2010:2016;[t1' P']% 畫出預測圖figure(6),plot(t,x,'b*-'),hold onplot(t(end):t1(end),[iinput(end),f_out],'rp-'),grid ontitle('BP神經網絡預測某地區人口數','fontsize',12)xlabel('年份'),ylabel('人口數');legend('1990-2009年人口變化數','2010-2016年人口預測數');。
模糊神經網絡matlab
您好,是這樣的:經過訓練后的參數比較差,用原數據輸入訓練好的網絡,得出結果和要的結果誤差很大,不明白是怎么回事?還有要是多輸入多輸出這段程序該怎么改?模糊神經網絡可以用matlab工具箱實現嗎?
還有輸入數據差別比較大(就是大小差異大)是不是要進行歸一化再學習訓練呢?求解,求解答!對于你的幫助不勝感激!
clear allclcclose alltic,%[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及輸出層初始權值Wfor i=1:p1; for j=1:k;m(i,j)=1+0.6*rand(1);b(i,j)=1+0.6*rand(1);endendfor 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)]);endend% 模糊推理計算:a21,a22.幾個隸屬度函數,得出幾個值,此處已知輸入為2%%%%----由以前的取小做法改為相乘—prod(x,1) or prod(x,2)———v=[];for i=1:kfor j=1:k v=[v,u(1,i)*u(2,j)];endend% 歸一化計算模糊推理的值;相當于已經除去了經典去模糊輸出的分母值for i=1:length(v);v1(i)=v(i)/sum(v);end% 系統輸出% out1(q)=w*v';% e(q)=(y(q)-out1(q));% end% out=out1out1(q)=w*v1';e(q)=y(q)-out1(q);endout=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 p0.05%%%%%%%%%%%%%_____隸屬度參數 M. B 輸出層權值參數 W 的修正過程_____%%%%%%%%%%%%%%1.--Wwc=zeros(1,k*k);for i=1:k*k;wc(i)=-lr*e(r)*v1(i);end%%2.--Mmc=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);endend%%3.--Bbc=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);endend% 4.參數修正 m b wm=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)]);endendv=[];for i=1:7for j=1:7 v=[v,u(1,i)*u(2,j)];endend% 歸一化計算模糊推理的值;相當于已經除去了經典去模糊輸出的分母值for i=1:length(v)v1(i)=v(i)/sum(v);endout1(q)=w*v1';endout=out1;p=p+1;EE=(1/2)*sumsqr(y-out);E(p)=EE;r=r+1;if r>p2r=1;ende(r)=(y(r)-out(r));end%%%%%%%%%%%%%%%%%%%________________當誤差或迭代步數滿足要求后得到結果_________________%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%m,b,w,E_out=EE,eepoch=1:size(E,2);figureplot(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的符號計算功能、圖形建模仿真功能、文字處理功能以及與硬件實時交互功能,能用于多種學科。領域型工具箱是專業性很強的。
如圖像處理工具箱(Image Processing Toolbox)、控制工具箱(Control Toolbox)、信號處理工具箱(Signal Processing Toolbox)等。
下面,將MATLAB工具箱內所包含的主要內容做簡要介紹: 1) 圖像處理工具箱(Image Processing Toolbox)。
* 二維濾波器設計和濾波 * 圖像恢復增強 * 色彩、集合及形態操作 * 二維變換 * 圖像分析和統計 可由結構圖直接生成可應用的C語言源代碼。
2)控制系統工具箱(Control System Toolbox)。
魯連續系統設計和離散系統設計 * 狀態空間和傳遞函數 * 模型轉換 * 頻域響應:Bode圖、Nyquist圖、Nichols圖 * 時域響應:沖擊響應、階躍響應、斜波響應等 * 根軌跡、極點配置、LQG 3)財政金融工具箱(FinancialTooLbox)。
* 成本、利潤分析,市場靈敏度分析 * 業務量分析及優化 * 偏差分析 * 資金流量估算 * 財務報表 4)頻率域系統辨識工具箱(Frequency Domain System ldentification Toolbox * 辨識具有未知延遲的連續和離散系統 * 計算幅值/相位、零點/極點的置信區間 * 設計周期激勵信號、最小峰值、最優能量諾等 5)模糊邏輯工具箱(Fuzzy Logic Toolbox)。
* 友好的交互設計界面 * 自適應神經—模糊學習、聚類以及Sugeno推理 * 支持SIMULINK動態仿真 * 可生成C語言源代碼用于實時應用 (6)高階譜分析工具箱(Higher—Order SpectralAnalysis Toolbox * 高階譜估計 * 信號中非線性特征的檢測和刻畫 * 延時估計 * 幅值和相位重構 * 陣列信號處理 * 諧波重構 (7) 通訊工具箱(Communication Toolbox)。
令提供100多個函數和150多個SIMULINK模塊用于通訊系統的仿真和分析 ——信號編碼 ——調制解調 ——濾波器和均衡器設計 ——通道模型 ——同步 (8)線性矩陣不等式控制工具箱(LMI Control Toolbox)。
* LMI的基本用途 * 基于GUI的LMI編輯器 * LMI問題的有效解法 * LMI問題解決方案 (9)模型預測控制工具箱(ModelPredictive Control Toolbox * 建模、辨識及驗證 * 支持MISO模型和MIMO模型 * 階躍響應和狀態空間模型 (10)u分析與綜合工具箱(u-Analysis and Synthesis Toolbox) * u分析與綜合 * H2和H無窮大最優綜合 * 模型降階 * 連續和離散系統 * u分析與綜合理論 (11)神經網絡工具箱(Neursl Network Toolbox)。
* BP,Hopfield,Kohonen、自組織、徑向基函數等網絡 * 競爭、線性、Sigmoidal等傳遞函數 * 前饋、遞歸等網絡結構 * 性能分析及應用 (12)優化工具箱(Optimization Toolbox)。
* 線性規劃和二次規劃 * 求函數的最大值和最小位 * 多目標優化 * 約束條件下的優化 * 非線性方程求解 (13)偏微分方程工具箱(Partial DifferentialEquation Toolbox)。
* 二維偏微分方程的圖形處理 * 幾何表示 * 自適應曲面繪制, * 有限元方法 (14)魯棒控制工具箱(Robust Control Toolbox)。
* LQG/LTR最優綜合 * H2和H無窮大最優綜合 * 奇異值模型降階 * 譜分解和建模 (15)信號處理工具箱(signal Processing Toolbox) * 數字和模擬濾波器設計、應用及仿真 * 譜分析和估計 * FFT,DCT等變換 * 參數化模型 (16)樣條工具箱(SPline Toolbox)。
* 分段多項式和B樣條 * 樣條的構造 * 曲線擬合及平滑 * 函數微分、積分(17)統計工具箱(Statistics Toolbox)。
* 概率分布和隨機數生成 * 多變量分析 * 回歸分析 * 主元分析 * 假設檢驗 (18)符號數學工具箱(Symbolic Math Toolbox)。
* 符號表達式和符號矩陣的創建 * 符號微積分、線性代數、方程求解 * 因式分解、展開和簡化 * 符號函數的二維圖形 * 圖形化函數計算器 (19)系統辨識工具箱(SystEm Identification Toolbox) * 狀態空間和傳遞函數模型 * 模型驗證 * MA,AR,ARMA等 * 基于模型的信號處理 * 譜分析 (20)小波工具箱(Wavelet Toolbox)。
* 基于小波的分析和綜合 * 圖形界面和命令行接口 * 連續和離散小波變換及小波包 * 一維、二維小波 * 自適應去噪和壓縮。
matlab中自帶的模糊神經網絡如何操作的?
我上次發給你的程序,只要你從網上下一個matcom45就行了,直接裝在c盤就可以了,你發給我的論文變量太多用一般的遺傳算法不行,我從網上發現了一個PID神經網絡,相當好用,不用計算隱層數目,很適合用遺傳算法進行優化,我編了一個例程回來發給你。
我真的不會用matlab的工具箱,如果一定要用matlab來做優化,恐怕我幫不了你了。為什么一定要用matlab,用C++自己編寫不也很好嗎?
求一段神經網絡MATLAB代碼 50
function [presim ss net] = simnonlin( y,d,n )% y-- 時間序列數據,列向量% d-- 時間延遲參數,正整數% n--用于訓練的點的個數,正整數trainset = gettrain(y,d);inputs = trainset(:,1:end-1)';targets = trainset(:,end)';net = feedforwardnet(20,'trainscg');% net = newff(inputs,targets,40);% net = train(net,inputs,targets);net=train(net,inputs,targets);presim(1:d)=y(end-d+1:end);for i = d+1:d + npresim(i) = sim(net,presim(i-d:i-1)');endss = presim(d+1:end)';end調用示例:t=[1:100]';y = exp(-0.1*t).*sin(t);d=10;n=80;sim = simnonlin( y,d,n );。
matlab中用RBF神經網絡做預測的代碼怎么寫
clc;clearall;closeall;%%----BuildatrainingsetofasimilarversionofXORc_1=[00];c_2=[11];c_3=[01];c_4=[10];n_L1=20;%numberoflabel1n_L2=20;%numberoflabel2A=zeros(n_L1*2,3);A(:,3)=1;B=zeros(n_L2*2,3);B(:,3)=0;%createrandompointsfori=1:n_L1A(i,1:2)=c_1+rand(1,2)/2;A(i+n_L1,1:2)=c_2+rand(1,2)/2;endfori=1:n_L2B(i,1:2)=c_3+rand(1,2)/2;B(i+n_L2,1:2)=c_4+rand(1,2)/2;end%showpointsscatter(A(:,1),A(:,2),[],'r');holdonscatter(B(:,1),B(:,2),[],'g');X=[A;B];data=X(:,1:2);label=X(:,3);%%Usingkmeanstofindcintervectorn_center_vec=10;rng(1);[idx,C]=kmeans(data,n_center_vec);holdonscatter(C(:,1),C(:,2),'b','LineWidth',2);%%Calulatesigman_data=size(X,1);%calculateKK=zeros(n_center_vec,1);fori=1:n_center_vecK(i)=numel(find(idx==i));end%UsingknnsearchtofindKnearestneighborpointsforeachcentervector%thencalucatesigmasigma=zeros(n_center_vec,1);fori=1:n_center_vec[n,d]=knnsearch(data,C(i,:),'k',K(i));L2=(bsxfun(@minus,data(n,:),C(i,:)).^2);L2=sum(L2(:));sigma(i)=sqrt(1/K(i)*L2);end%%Calutateweights%kernelmatrixk_mat=zeros(n_data,n_center_vec);fori=1:n_center_vecr=bsxfun(@minus,data,C(i,:)).^2;r=sum(r,2);k_mat(:,i)=exp((-r.^2)/(2*sigma(i)^2));endW=pinv(k_mat'*k_mat)*k_mat'*label;y=k_mat*W;%y(y>=0.5)=1;%y(y。
matlab 在神經網絡 模糊控制
首先要明白模糊控制的含義及模糊控制器的設計過程,一般包括模糊化,建立規則,模糊推理,清晰化等過程,然后神經網絡(重點是BP神經網絡的計算過程和BP算法),然后用matlab編程實現一遍,基本就能弄清楚了。
matlab很好學的,又稱傻瓜語言。建議你看模糊控制、神經網絡各一本教材,然后嘗試用matlab實現一遍,基本就能學會了。
?
總結
以上是生活随笔為你收集整理的自适应模糊神经网络算法,matlab模糊神经网络实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最后一位被整除 oracle,【CTF
- 下一篇: Mybatis_Plus日常开发遇到问题