QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1800|回复: 2
打印 上一主题 下一主题

帮忙看下程序的错误

[复制链接]
字体大小: 正常 放大
deven1985 实名认证       

23

主题

3

听众

2433

积分

智慧的蓝色小毛驴

  • TA的每日心情
    开心
    2011-12-5 23:03
  • 签到天数: 106 天

    [LV.6]常住居民II

    自我介绍
    200 字节以内
    不支持自定义 Discuz! 代码

    新人进步奖

    跳转到指定楼层
    1#
    发表于 2011-8-31 11:27 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    今天编了一段程序,如下:
    clear all;
    close all;
    a=59.36;b=7.42;m=2374.46;n=296.92;
    ts=0.001;
    A1=[0,0,1,0;0,0,0,1;a,-b,0,0;b,-a,0,0];
    B1=[0,0;0,0;m,-n;n,-m];
    C1=[0,1,0,0];
    D1=[0,0];
    [A,B,C,D]=c2dm(A1,B1,C1,D1,ts,'z');
    x=[0;0;0;0];
    r_1=0;r_2=0;g_1=0;g_2=0;
    c=5.0;
    eq=5;
    q=30;
    Ce=[c,1,1,1];
    for k=1:1:2000
    time(k)=k*ts;
       r(k)=1.0;
       g(k)=1.0;
       
       %Using Waitui method   
       dr(k)=(r(k)-r_1)/ts;
       dg(k)=(g(k)-g_1)/ts;
       dr_1=(r_1-r_2)/ts;
       dg_1=(g_1-g_2)/ts;
       r1(k)=2*r(k)-r_1;
       g1(k)=2*g(k)-g_1;
       dr1(k)=2*dr(k)-dr_1;
       dg1(k)=2*dg(k)-dg_1;
      
       R=[r(k);dr(k);g(k);dg(k)];
       R1=[r1(k);dr1(k);g1(k);dg1(k)];
       
       E=R-x;
       e(k)=E(1);
       de(k)=E(2);
       
       s(k)=Ce*E;
       
       X1=abs(e(k))+abs(de(k));
       
    M=3;   
    if M==1             %EXP reaching law
       ds(k)=-eq*ts*sign(s(k))-q*ts*s(k);
       u(k)=inv(Ce*B)*(Ce*R1-Ce*A*x-s(k)-ds(k));
    elseif M==2         %Variable rate reachine law
       ds(k)=-eq*ts*X1*sign(s(k));
       u(k)=inv(Ce*B)*(Ce*R1-Ce*A*x-s(k)-ds(k));
    elseif M==3         %Coposite reaching law
       k0=0.60;
       if X1>k0          %EXP reachine law
        ds(k)=-eq*ts*sign(s(k))-q*ts*s(k);
        u(k)=inv(Ce*B)*(Ce*R1-Ce*A*x-s(k)-ds(k));   elseif X1<=k0     %Variable rate reachine law
       ds(k)=-eq*ts*X1*sign(s(k));
       u(k)=inv(Ce*B)*(Ce*R1-Ce*A*x-s(k)-ds(k));
       end
    end
    if u(k)>=10
       u(k)=10;
    end
    if u(k)<=-10
       u(k)=-10;
    end
    x=A*x+B*u(k);
    y(k)=x(1);
    %Update Parameters
    r_2=r_1;
    r_1=r(k);
    end
    figure(1)
    plot(time,r,'r',time,y,'b');
    xlabel('Time(second)');ylabel('Position tracking');
    figure(2)
    plot(time,s,'r');
    xlabel('Time(second)');ylabel('Switch function s');
    figure(3)
    plot(e,de,'r',e,-c*e,'b');
    axis([0,0.001,-0.01,0]);
    xlabel('e');ylabel('de');
    figure(4)
    plot(time,u,'r');
    xlabel('Time(second)');ylabel('u');

    运行后系统提示:

    ??? Error using ==> inv
    Matrix must be square.
    Error in ==> matlab02 at 56
        u(k)=inv(Ce*B)*(Ce*R1-Ce*A*x-s(k)-ds(k));

    (错误行已用红色标出)

    麻烦大家帮我看一下给怎么改,谢谢了!!
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    21

    主题

    7

    听众

    3435

    积分

    升级  47.83%

  • TA的每日心情

    2014-5-25 20:58
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    新人进步奖 优秀斑竹奖

    群组Matlab讨论组

    群组小草的客厅

    群组数学趣味、游戏、IQ等

    群组C 语言讨论组

    群组我行我数

    本帖最后由 水木年华zzu 于 2011-9-3 11:14 编辑

    这个错误已经是很明显的了,要求矩阵的逆矩阵,这个矩阵必须是方阵
    检查下面的公式计算出来为什么不是方阵就就行了
    (Ce*B)*(Ce*R1-Ce*A*x-s(k)-ds(k)
    已有 1 人评分体力 收起 理由
    大笨象 + 6 赞一个!

    总评分: 体力 + 6   查看全部评分

    回复

    使用道具 举报

    alair006        
    头像被屏蔽

    0

    主题

    4

    听众

    558

    积分

    升级  86%

  • TA的每日心情
    擦汗
    2012-2-8 08:16
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    提示: 作者被禁止或删除 内容自动屏蔽
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-5-30 05:16 , Processed in 0.394513 second(s), 64 queries .

    回顶部