matlab运行出现??? In an assignment A(I) = B, the number of elements in B and I must be the same

G=fotf([11,1],[1,0],[1],[0]);
kp0=51;ki0=123.4;kd0=54.4;lamta0=0.8;uu0=1;
e_1=0;ec_1=0;
for k=1:1:10

yd(k)=1;
k_pid=evalfis([e_1,ec_1],a);
kp(k)=kp0+k_pid(1);
ki(k)=ki0+k_pid(2);
kd(k)=kd0+k_pid(3);
lamta(k)=lamta0+k_pid(4);
uu(k)=uu0+k_pid(5);
K1=kp(k);
K2=ki(k);
K3=kd(k);
s1=lamta;
s2=uu;
Gc=fotf([1],[s1],[K2,K1,K3],[s1+s2,s1,0]);
Ga=feedback(G*Gc,1);
ts=0:0.01:10;
y=step(Ga,ts);
plot(ts,y)
e(k)=yd(k)-y;
ec(k)=e(k)-e_1;
e_1=e(k);
ec_1=ec(k);
end

第1个回答  2013-06-12
1、分数阶传函网上有不同的实现,你用的是哪一个?彭天写的那个吗?
http://download.csdn.net/download/poonjun/1236058

2、这一行代码:
k_pid=evalfis([e_1,ec_1],a);
有两个问题:
(1)a未定义;
(2)evalfis是Fuzzy Logic Toolbox的函数吗?第二个参数不合要求啊。如果不是,那么是什么来源?追问

evalfis是Fuzzy Logic Toolbox的函数,这程序是参照刘金琨先进PID控制matlab仿真第八章例子写的!

追答

刘金琨的《先进PID控制matlab仿真》出了好几版,你说的是第几版?
我看的版本没见到这个例子,第八章是关于灰色系统的,也没有分数阶PID相关的内容。

相似回答