我是为了做如下问题:
function dx=lorzen3(t,x); dx=[-15*x(1)+15*x(2); 35*x(1)-x(2)-x(1)*x(3); x(1)*x(2)-4*x(3)]; 这是一个混沌系统,我 现在加入sat(u)这个控制器,受控的lorzen3就变成了 function dx=lorzen3(t,x); dx=[-15*x(1)+15*x(2); 35*x(1)-x(2)-x(1)*x(3)+sat(-1.5*abs(10*(-15*x(1)+15*x(2))+35*x(1)-x(2)-x(1)*x(3))*x(4)*sign(10*x(1)+x(2)),5,5); x(1)*x(2)-4*x(3); 1.5*abs(10*(-15*x(1)+15*x(2))+35*x(1)-x(2)-x(1)*x(3))*x(4)*x(4)*x(4)*abs(10*x(1)+x(2))];
其中 function a=sat(a,b,c) a(find(a>b))=b; a(find(a<-c))=-c;
执行如下 clear al1 [t,x]=ode45(@lorzen3,0:0.01:10,[-10 -10 10 0.01]); plot(t,x(:,1),'k') 画不出完整的时间历程图, 理论上是能实现的, 我把受控的sat(u)去掉,图形还是一样,说明没有起到作用,请教如何 处理? 还有就是关于如何对变量运算进行编程?我也知道变量在这里不能运算,想问问如何处理这方面的问题,如下 是 错误 提示
function d=ly(a,b,c)
d(find(a>b))=b/a; d(find(a<-c))=-c/a;
d(find(a<=b&a>=-c))=1;
>> x=0:0.01:10;plot(x,sin(x)*ly(sin(x),0.5,0.5))
??? Error using ==> mrdivide
Matrix dimensions must agree. Error in ==> ly at 2
d(find(a>b))=b/a;
万分感谢!
[ 本帖最后由 ChaChing 于 2009-4-26 11:41 编辑 ] |