📄 【求助】用matlab进行预测控制的仿真 - 预测控制 - 自动控制 - 研学论坛 研学学术科技.htm
字号:
<P><IMG alt="Rank: 1"
src="【求助】用MATLAB进行预测控制的仿真 - 预测控制 - 自动控制 - 研学论坛 研学学术科技.files/star_level1.gif"></P>
<UL>
<LI class=space><A href="http://www.matwav.net/space.php?uid=165744"
target=_blank>个人空间</A> </LI>
<LI class=pm><A onclick="pmwin('open', 'uid=165744')"
href="http://bbs.matwav.com/viewthread.php?tid=182990###">发短消息</A> </LI>
<LI class=buddy><A id=ajax_buddy_9
onclick="ajaxmenu(event, this.id, 3000, 0)"
href="http://bbs.matwav.com/my.php?item=buddylist&newbuddyid=165744&buddysubmit=yes"
target=_blank>加为好友</A> </LI>
<LI class=offline>当前离线 </LI></UL></TD>
<TD class=postcontent>
<DIV class=postinfo><STRONG id=postnum532178 title=复制帖子链接到剪贴板
onclick="setcopy('http://bbs.matwav.com/viewthread.php?tid=182990&page=1#pid532178', '帖子链接已经复制到剪贴板')">10<SUP>#</SUP></STRONG>
<EM onclick="$('postmessage_532178').className='t_bigfont'">大</EM> <EM
onclick="$('postmessage_532178').className='t_msgfont'">中</EM> <EM
onclick="$('postmessage_532178').className='t_smallfont'">小</EM> 发表于
2006-7-3 09:07 <A
href="http://bbs.matwav.com/viewthread.php?tid=182990&page=1&authorid=165744"
rel=nofollow>只看该作者</A> </DIV>
<DIV id=ad_thread2_9></DIV>
<DIV class="postmessage defaultpost">
<DIV id=ad_thread3_9></DIV>
<DIV id=ad_thread4_9></DIV>
<H2>Re:【求助】用MATLAB进行预测控制的仿真</H2>
<DIV class=t_msgfont id=postmessage_532178>我这里有一个GPC的程序,是我们上课老师布置的作业
希望对你有帮助<BR>clear all;<BR>close all;<BR>%Parameter<BR>%Mode<BR>%mode=1 tao
does not change, while a changes<BR>%mode=2 tao changes , while a does not
change<BR>Mode=2;<BR><BR>%System
structure<BR>na=2;<BR>nb=1;<BR>tao=0;<BR><BR>%predictive control
parameter<BR>N=5; %predictive time domain<BR>Nu=1;
%control time domain<BR><BR>%identification
parameters<BR>po_thita=zeros(na+nb+1,1);<BR>mu=0.97;<BR>fai=zeros(na+nb+1,1);<BR>P=10*eye(na+nb+1);<BR><BR>%set
trace
parameters<BR>T=1;<BR>ta=1.8;<BR>alpha=exp(-T/ta);<BR>c=2;<BR><BR>%input
and
output<BR>y_temp=zeros(1,3);<BR>y=zeros(1,1000);<BR>u=zeros(1,1000);<BR>u(1,4)=1;<BR>noise=random('Normal',
0,0.01,1,991);<BR><BR>%Start<BR>for k=10:1000 <BR> switch
Mode<BR> case 1<BR>
tao=6;<BR>
if k<=201<BR>
a=0.8854;<BR>
elseif k<=301<BR>
a=0.6725;<BR>
elseif k<=401<BR>
a=0.5968;<BR>
elseif k<=501<BR>
a=0.7762;<BR>
else<BR>
a=0.8854;<BR>
end<BR>
case 2<BR>
a=0.8854;<BR>
if k<=201<BR>
tao=6;<BR>
elseif k<=301<BR>
tao=4; <BR>
elseif k<=401<BR>
tao=8;<BR>
elseif k<=501<BR>
tao=6;<BR>
else<BR>
tao=6;<BR>
end<BR> end<BR> <BR>
y_temp(1)=(a+0.264)*y_temp(2)-0.264*a*y_temp(3)+0.864*u(k-tao)-0.2731*u(k-tao-1);<BR>
y(k)=y_temp(1)+noise(k-9);<BR> <BR>
y_temp(3)=y_temp(2);<BR> y_temp(2)=y_temp(1);<BR>
<BR> %identification<BR> <BR>
%fai<BR> for i=1:na<BR>
fai(i)=-(y(k-i)-y(k-i-1));<BR>
end<BR> for i=1:nb+1<BR>
fai(na+i)=u(k-tao+1-i)-u(k-tao+1-i-1);<BR>
end<BR> <BR>
kai=P*fai/(fai'*P*fai+mu);<BR>
P=(mu^(-1))*(eye(na+nb+1)-kai*fai')*P;<BR>
po_thita=po_thita+kai*(y(k)-y(k-1)-fai'*po_thita);<BR>
thita=[1,po_thita'];<BR> <BR> %diophantine
<BR> f=zeros(na+1,1);<BR>
f(1)=1;<BR> f_f=zeros(N,na+1);<BR>
E=cell(1,N);<BR> E{1}=1;<BR> <BR>
g=cell(1,N);<BR> g_g=zeros(N,Nu);<BR>
f_t=zeros(N,1);<BR> g_t=zeros(N,1);<BR>
w=zeros(N,1);<BR> <BR> for ite1=1:N<BR>
f_e=f(1);<BR>
for ite2=1:na<BR>
f(ite2)=f(ite2+1)-(thita(ite2+1)-thita(ite2))*f_e;<BR>
end<BR>
f(na+1)=thita(na+1)*f_e;<BR>
f_f(ite1,<IMG alt=""
src="【求助】用MATLAB进行预测控制的仿真 - 预测控制 - 自动控制 - 研学论坛 研学学术科技.files/smile.gif"
border=0 smilieid="1">=f';<BR> if
ite1<N<BR>
E{ite1+1}=[E{ite1},f(1)];<BR>
end<BR> end<BR> <BR>
%compute g<BR> for ite1=1:N<BR>
g{ite1}=zeros(1,nb+ite1);<BR>
for ite2=1:nb+ite1<BR>
for ite3=1:ite1<BR>
temp=ite2+1-ite3;<BR>
if
(temp<=nb+1)&(temp>=1)<BR>
g{ite1}(ite2)=g{ite1}(ite2)+thita(na+1+temp)*E{ite1}(ite3);<BR>
end<BR>
end<BR>
end<BR> end<BR> <BR>
%compute g_g<BR> for ite1=1:N<BR>
if ite1<=Nu<BR>
for ite2=1:ite1<BR>
g_g(ite1,1+ite1-ite2)=g{ite1}(ite2);<BR>
end<BR>
else<BR> for
ite2=1:Nu<BR>
g_g(ite1,Nu+1-ite2)=g{ite1}(ite1-Nu+ite2);<BR>
end<BR>
end<BR> end<BR> <BR> %compute
f_n*y(k)<BR> for ite1=1:N<BR>
for ite2=1:na+1<BR>
f_t(ite1)=f_t(ite1)+f_f(ite1,ite2)*y(k+1-ite2);<BR>
end<BR> end<BR>
<BR> %compute g_n*u(k)<BR> for
ite1=1:N<BR> for ite2=1:nb<BR>
g_t(ite1)=g_t(ite1)+g{ite1}(ite2+ite1)*(u(k-tao-ite2)-u(k-tao-ite2-1));<BR>
end<BR> end
<BR> % set trace <BR> for
ite1=1:N<BR>
w(ite1)=alpha^(ite1)*y(k)+(1-alpha^(ite1))*c;<BR>
end<BR> <BR> %compute u
<BR> r_ft=g_t+f_t;<BR>
be_u=inv(g_g'*g_g+eye(Nu))*g_g';<BR>
u(k-tao+1)=u(k-tao)+be_u(1,<IMG alt=""
src="【求助】用MATLAB进行预测控制的仿真 - 预测控制 - 自动控制 - 研学论坛 研学学术科技.files/smile.gif"
border=0 smilieid="1">*(w-r_ft); <BR>end<BR>%plot y
u<BR>plot(y);<BR>figure;<BR>plot(u);</DIV>
<DIV id=post_rate_div_532178></DIV></DIV></TD></TR>
<TR>
<TD class=postauthor>
<DIV class="popupmenu_popup userinfopanel" id=userinfo532178_menu
style="DISPLAY: none">
<DL>
<DT>UID</DT>
<DD>165744 </DD>
<DT>帖子</DT>
<DD>8 </DD>
<DT>精华</DT>
<DD><A
href="http://bbs.matwav.com/digest.php?authorid=165744">0</A> </DD>
<DT>积分</DT>
<DD>0 </DD>
<DT>阅读权限</DT>
<DD>10 </DD>
<DT>来自</DT>
<DD>浙江 杭州 </DD>
<DT>在线时间</DT>
<DD>0 小时 </DD>
<DT>注册时间</DT>
<DD>2006-3-8 </DD>
<DT>最后登录</DT>
<DD>2008-1-3 </DD></DL>
<P><A href="http://bbs.matwav.com/space.php?uid=165744"
target=_blank>查看详细资料</A></P></DIV></TD>
<TD class=postcontent>
<DIV class=postactions>
<P><STRONG title=顶部 onclick=scroll(0,0)>TOP</STRONG> </P>
<DIV id=ad_thread1_9></DIV></DIV></TD></TR></TBODY></TABLE></DIV></FORM>
<SCRIPT type=text/javascript>var tagarray = ['雷达','求助','北京','频谱','泄漏','ifft','傅里叶逆变换','IEEE','Radar','Conference','参加','天线方向图','威力','压缩传感','fft','交通灯','模糊算法','论文集','年会','mex','请教','超值宝贝推荐','神经网络','浏览器','动画','正高','系统','办公','数据采集、信号分析'];var tagencarray = ['%C0%D7%B4%EF','%C7%F3%D6%FA','%B1%B1%BE%A9','%C6%B5%C6%D7','%D0%B9%C2%A9','ifft','%B8%B5%C0%EF%D2%B6%C4%E6%B1%E4%BB%BB','IEEE','Radar','Conference','%B2%CE%BC%D3','%CC%EC%CF%DF%B7%BD%CF%F2%CD%BC','%CD%FE%C1%A6','%D1%B9%CB%F5%B4%AB%B8%D0','fft','%BD%BB%CD%A8%B5%C6','%C4%A3%BA%FD%CB%E3%B7%A8','%C2%DB%CE%C4%BC%AF','%C4%EA%BB%E1','mex','%C7%EB%BD%CC','%B3%AC%D6%B5%B1%A6%B1%B4%CD%C6%BC%F6','%C9%F1%BE%AD%CD%F8%C2%E7','%E4%AF%C0%C0%C6%F7','%B6%AF%BB%AD','%D5%FD%B8%DF','%CF%B5%CD%B3','%B0%EC%B9%AB','%CA%FD%BE%DD%B2%C9%BC%AF%A1%A2%D0%C5%BA%C5%B7%D6%CE%F6'];parsetag(182990);</SCRIPT>
<DIV class=pages_btns>
<DIV class=threadflow><A
href="http://bbs.matwav.com/redirect.php?fid=616&tid=182990&goto=nextoldset">‹‹
上一主题</A> | <A
href="http://bbs.matwav.com/redirect.php?fid=616&tid=182990&goto=nextnewset">下一主题
››</A></DIV>
<DIV class=pages><EM> 18 </EM><STRONG>1</STRONG><A
href="http://bbs.matwav.com/viewthread.php?tid=182990&extra=&page=2">2</A><A
class=next
href="http://bbs.matwav.com/viewthread.php?tid=182990&extra=&page=2">››</A></DIV><SPAN
class=postbtn id=newspecialtmp
onmouseover="$('newspecial').id = 'newspecialtmp';this.id = 'newspecial';showMenu(this.id)"><A
href="http://bbs.matwav.com/post.php?action=newthread&fid=616&extra="><IMG
title=发新话题 alt=发新话题
src="【求助】用MATLAB进行预测控制的仿真 - 预测控制 - 自动控制 - 研学论坛 研学学术科技.files/newtopic.gif"
border=0></A></SPAN> <SPAN class=replybtn><A
href="http://bbs.matwav.com/post.php?action=reply&fid=616&tid=182990&extra="><IMG
alt="" src="【求助】用MATLAB进行预测控制的仿真 - 预测控制 - 自动控制 - 研学论坛 研学学术科技.files/reply.gif"
border=0></A></SPAN></DIV>
<SCRIPT type=text/javascript>
var maxpage = 2;
if(maxpage > 1) {
document.onkeyup = function(e){
e = e ? e : window.event;
var tagname = is_ie ? e.srcElement.tagName : e.target.tagName;
if(tagname == 'INPUT' || tagname == 'TEXTAREA') return;
actualCode = e.keyCode ? e.keyCode : e.charCode;
if(actualCode == 39) {
window.location = 'viewthread.php?tid=182990&page=2';
}
}
}
</SCRIPT>
</DIV>
<UL class="popupmenu_popup headermenu_popup" id=memcp_menu
style="DISPLAY: none">
<LI><A href="http://bbs.matwav.com/memcp.php">控制面板首页</A> </LI>
<LI><A href="http://bbs.matwav.com/memcp.php?action=profile">编辑个人资料</A> </LI>
<LI><A href="http://bbs.matwav.com/memcp.php?action=credits">积分交易</A> </LI>
<LI><A href="http://bbs.matwav.com/memcp.php?action=creditslog">积分记录</A> </LI>
<LI><A href="http://bbs.matwav.com/memcp.php?action=usergroups">公众用户组</A>
</LI></UL>
<UL class="popupmenu_popup headermenu_popup" id=stats_menu
style="DISPLAY: none">
<LI><A href="http://bbs.matwav.com/stats.php">基本概况</A> </LI>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -