BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / matlab / #10849同步于 2014/4/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖

求助,想加个脉冲信号,代码就不行了

amy0724
2014/4/22镜像同步3 回复
function R = rk4(f,g,h,a,b,xa,ya,za,N) %UNTITLED2 Summary of this function goes here % Detailed explanation goes here %x'=f(t,x,y,z) y'=g(t,x,y,z) z'=h(t,x,y,z) %N为迭代次数 %h为步长 %ya,xa为初值 i=(b-a)/N; T=zeros(1,N+1); X=zeros(1,N+1); Y=zeros(1,N+1); Z=zeros(1,N+1); T=a:i:b; X(1)=xa; Y(1)=ya; Z(1)=za; ut1=stepfun(T,900); ut2=stepfun(T,910); I=4-2.4*ut1+2.4*ut2;f=@(t,x,y,z)(y-x^3+3*x^2-z+ I); g=@(t,x,y,z)(1-5*x^2-y); h=@(t,x,y,z)(0.024*x-0.006*z+0.0384); for j=1:N f1=feval(f,T(j),X(j),Y(j),Z(j)); g1=feval(g,T(j),X(j),Y(j),Z(j)); h1=feval(h,T(j),X(j),Y(j),Z(j)); f2=feval(f,T(j)+i/2,X(j)+i/2*f1,Y(j)+i/2*g1,Z(j)+i/2*h1); g2=feval(g,T(j)+i/2,X(j)+i/2*f1,Y(j)+i/2*g1,Z(j)+i/2*h1); h2=feval(h,T(j)+i/2,X(j)+i/2*f1,Y(j)+i/2*g1,Z(j)+i/2*h1); f3=feval(f,T(j)+i/2,X(j)+i/2*f2,Y(j)+i/2*g2,Z(j)+i/2*h2); h3=feval(h,T(j)+i/2,X(j)+i/2*f2,Y(j)+i/2*g2,Z(j)+i/2*h2); g3=feval(g,T(j)+i/2,X(j)+i/2*f2,Y(j)+i/2*g2,Z(j)+i/2*h2); f4=feval(f,T(j)+i,X(j)+i*f3,Y(j)+i*g3,Z(j)+i*h3); g4=feval(g,T(j)+i,X(j)+i*f3,Y(j)+i*g3,Z(j)+i*h3); h4=feval(h,T(j)+i,X(j)+i*f3,Y(j)+i*g3,Z(j)+i*h3); X(j+1)=X(j)+i*(f1+2*f2+2*f3+f4)/6; Y(j+1)=Y(j)+i*(g1+2*g2+2*g3+g4)/6; Z(j+1)=Z(j)+i*(h1+2*h2+2*h3+h4)/6; R=[T' X' Y' Z']; plot(T,X) xlabel('t'); ylabel('x'); title('I=3.15'); axis([700,1050,-2.5,2.5]); end 不一样颜色的 就是后加的内容 本来不加脉冲电流,是可以仿真出波形的,加了之后就出现以下的问题 ??? Error using ==> mpower Inputs must be a scalar and a square matrix. Error in ==> rk4>@(t,x,y,z)(y-x^3+3*x^2-z+I) at 20 f=@(t,x,y,z)(y-x^3+3*x^2-z+ I); Error in ==> rk4 at 28 f2=feval(f,T(j)+i/2,X(j)+i/2*f1,Y(j)+i/2*g1,Z(j)+i/2*h1); 修改后 又出现 In an assignment A(I) = B, the number of elements in B and I must be the same. 有没有大神知道是为什么QAQ 求帮助啊~
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
amy0724机器人#1 · 2014/4/22
求顶~
z2642x机器人#2 · 2014/4/22
这种问题..自己调试检查矩阵大小吧
amy0724机器人#3 · 2014/4/23
可是为什么加脉冲前是可以用的呢?这没道理啊 【 在 z2642x 的大作中提到: 】 : 这种问题..自己调试检查矩阵大小吧