Re: [討論] 請益用matlab寫模糊控制水溫控制

看板MATLAB作者 (攸藍)時間11年前 (2014/06/08 23:59), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
以紅色標示一下你code有問題的地方(我修正的地方) clear Ts=25; p=1.00151*10^(-4); q=8.67973*10^(-3); r=40.0; a=exp(-p*Ts); b=(q/p)*(1-a); yo =25; % 以下幾行只是幫你修改成易讀的code ref = [35*ones(1, 40), 50*ones(1, 40), 65*ones(1, 40), 80*ones(1, 380)]; GE=1/15; GC=1/15; GU=450; y = zeros(1, 500); y(1)=25; e = zeros(1, 500); ee = zeros(1, 500); ce = zeros(1, 500); ce(1)=0; cee = zeros(1, 500); mu = zeros(1, 500); u = zeros(1, 500); % for k=1:500 e(k)=ref(k)-y(k); ee(k)=e(k)*GE; if k >= 2 ce(k)=e(k)-e(k-1); end cee(k)=e(k)*GC; mu(k)=1; u(k)=mu(k)*GU; y(k+1)=a*y(k)+b/(1+exp(0.5*y(k)-r))*u(k)+(1-a)*yo; end % 你的y長度是501,其他參數e, ee, ce, cee, mu, u的長度都是500 % 所以0:25:499 * Ts長度是500才能畫,y只取前五百個畫 subplot(2,2,1) plot(0:25:499 * Ts, y(1:500), 0:25:499 * Ts, ref, '--') ylabel('Temperature(degree) ') xlabel('time:sec') grid subplot(2,2,2) plot(0:25:499* Ts,e) ylabel('error(degree)') xlabel('time:sec') grid subplot(2,2,3) plot(0:25:499* Ts,ce) ylabel('change of error(degree)') xlabel('time:sec') grid subplot(2,2,3) plot(0:25:499* Ts,u) ylabel('voltage') xlabel('time:sec') grid -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.164.168.118 ※ 文章網址: http://www.ptt.cc/bbs/MATLAB/M.1402243187.A.8D9.html
文章代碼(AID): #1Jb8XpZP (MATLAB)
文章代碼(AID): #1Jb8XpZP (MATLAB)