日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

模糊控制器的MATLAB仿真(位置跟踪和 Simulink仿真)

發布時間:2024/3/12 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 模糊控制器的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畫出跟蹤結果
位置跟蹤

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');

t來自于Simulink的結果。

總結

以上是生活随笔為你收集整理的模糊控制器的MATLAB仿真(位置跟踪和 Simulink仿真)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。