模糊控制器的MATLAB仿真(位置跟踪和 Simulink仿真)
生活随笔
收集整理的這篇文章主要介紹了
模糊控制器的MATLAB仿真(位置跟踪和 Simulink仿真)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
模糊控制器的MATLAB仿真
模糊控制器的設計
設計模糊控制的具體詳解請參照鏈接: https://blog.csdn.net/LOVE_105/article/details/112135599.
按照相同的方法得到模糊推理系統
模糊邏輯控制的位置跟蹤
設置被控對象為
G(s) = 400/(s^2+500s)
設計兩輸入單輸出模糊控制器,輸入為偏差和偏差變化率,輸出為控制量U,使系統輸出能實時跟蹤輸入信號。
Simulink仿真
設計代碼
模糊控制器
clear all; close all; a = newfis('fuzzf'); a = addvar(a,'input','e',[-0.3,0.3]); a = addmf(a,'input',1,'NB','zmf',[-0.3,-0.1]); a = addmf(a,'input',1,'NM','trimf',[-0.3,-0.2,0]); a = addmf(a,'input',1,'NS','trimf',[-0.3,-0.1,0.1]); a = addmf(a,'input',1,'Z','trimf',[-0.2,0,0.2]); a = addmf(a,'input',1,'PS','trimf',[-0.1,0.1,0.3]); a = addmf(a,'input',1,'PM','trimf',[0,0.2,0.3]); a = addmf(a,'input',1,'PB','smf',[0.1,0.3]); a = addvar(a,'input','ec',[-0.3,0.3]); a = addmf(a,'input',2,'NB','zmf',[-0.3,-0.1]); a = addmf(a,'input',2,'NM','trimf',[-0.3,-0.2,0]); a = addmf(a,'input',2,'NS','trimf',[-0.3,-0.1,0.1]); a = addmf(a,'input',2,'Z','trimf',[-0.2,0,0.2]); a = addmf(a,'input',2,'PS','trimf',[-0.1,0.1,0.3]); a = addmf(a,'input',2,'PM','trimf',[0,0.2,0.3]); a = addmf(a,'input',2,'PB','smf',[0.1,0.3]); a = addvar(a,'output','u',[-30,30]); a = addmf(a,'output',1,'NB','zmf',[-30,30]); a = addmf(a,'output',1,'NM','trimf',[-30,-20,0]); a = addmf(a,'output',1,'NS','trimf',[-30,-10,10]); a = addmf(a,'output',1,'Z','trimf',[-20,0,20]); a = addmf(a,'output',1,'PS','trimf',[-10,10,30]); a = addmf(a,'output',1,'PM','trimf',[0,20,30]); a = addmf(a,'output',1,'PB','smf',[10,30]); rulelist = [1 1 1 1 1;1 2 1 1 1;1 3 2 1 1;1 4 2 1 1;1 5 3 1 1;1 6 3 1 1;1 7 4 1 1;2 1 1 1 1;2 2 2 1 1;2 3 2 1 1;2 4 3 1 1;2 5 3 1 1;2 6 4 1 1;2 7 5 1 1;3 1 2 1 1;3 2 2 1 1;3 3 3 1 1;3 4 3 1 1;3 5 4 1 1;3 6 5 1 1;3 7 5 1 1;4 1 2 1 1;4 2 3 1 1;4 3 3 1 14 4 4 1 1;4 5 4 1 1;4 6 5 1 1;4 7 6 1 1;5 1 3 1 1;5 2 3 1 1;5 3 4 1 15 4 5 1 1;5 5 5 1 1;5 6 6 1 1;5 7 6 1 1;6 1 3 1 1;6 2 4 1 1;6 3 5 1 16 4 5 1 1;6 5 6 1 1;6 6 6 1 1;6 7 7 1 1;7 1 4 1 1;7 2 5 1 1;7 3 5 1 17 4 6 1 1;7 5 6 1 1;7 6 7 1 1;7 7 7 1 1;]; a = addrule(a,rulelist); showrule(a) a1 = setfis(a,'DefuzzMethod','mom'); writefis(a1,'fuzzf'); a2 = readfis('fuzzf'); disp('------------------------------------------------------'); disp('fuzzy controller tabel:e = [-3,+3],ec = [-3.+3] '); disp('------------------------------------------------------'); Ulist = zeros(7,7); for i = 1:7for j = 1:7e(i) = -4+i;ec(j) = -4+j;Ulist(i,j) = evalfis([e(i),ec(j)],a2);end end Ulist=ceil(Ulist); figure(1); plotfis(a2); figure(2); plotmf(a,'input',1); figure(3); plotmf(a,'input',2); figure(4); plotmf(a,'output',1);位置跟蹤
close all; figure(1); plot(t,y(:,1),'r',t,y(:,2),'k:','linewidth',2); xlabel('time(s)');ylabel('yd,y'); legend('Ideal position signal','position tracking');最終結果展示
代碼詳解
模糊控制器的代碼詳解可參照https://blog.csdn.net/LOVE_105/article/details/112135599.
我們知道我們需要建立類似如圖所示的控制系統。
Simulink的仿真是根據圖所示,設計一個雙輸入單輸出的模糊控制系統。
具體做法可參照https://blog.csdn.net/LOVE_105/article/details/112143886最后通過得到的t畫出跟蹤結果
位置跟蹤
t來自于Simulink的結果。
總結
以上是生活随笔為你收集整理的模糊控制器的MATLAB仿真(位置跟踪和 Simulink仿真)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐你认为最不错的3-5个技术或IT社区
- 下一篇: tomcat启动时日志卡在Deployi