QQ登录

只需要一步,快速开始

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

[其他经验] Matlab常见语法错误(1)

[复制链接]
字体大小: 正常 放大

3503

主题

538

听众

5990

积分

  • TA的每日心情
    开心
    2017-2-7 15:12
  • 签到天数: 691 天

    [LV.9]以坛为家II

    社区QQ达人 元老勋章 发帖功臣 新人进步奖 优秀斑竹奖 金点子奖 原创写作奖 最具活力勋章 助人为乐奖 风雨历程奖

    群组2013年国赛赛前培训

    群组2014年地区赛数学建模

    群组数学中国第二期SAS培训

    群组物联网工程师考试

    群组2013年美赛优秀论文解

    跳转到指定楼层
    1#
    发表于 2016-4-2 17:55 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    Matlab常见语法错误
    $ m4 m1 }/ W' KSubscript indices must either be real positive integers or logicals : y+ ^8 j; e, c$ K2 _, e: E! g
    中文解释:下标索引必须是正整数类型或者逻辑类型: k# x6 q5 ~9 J: n1 [) n! T3 j
    5 b6 ?+ O0 e: w7 U: v+ ?
    出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从 0 开始,要么出现了负数。注:matlab的语法规定矩阵的索引从 1 开始,这与 C 等编程语言的习惯不一样。
    7 N6 l9 M# w2 O
    : l' l' D& P. d7 G. ]' x4 g8 i3 e解决办法:自己调试一下程序,把下标为 0 或者负数的地方修正。关于矩阵的各种访问方式。
    " D4 Y5 p1 M, U8 Q1 W! {! I, t! r! m  ]8 G
    举例:. p" ?6 [3 b2 W! G' X6 J, D
    【错误代码】:
      o' X* o! q( x8 D' L6 M9 F. v1. for s = 0:0.2:2
    # ^, X/ n% z9 a2 ^2. a(s) = 4 * s - 1;
    7 O# |  A6 L. r  l3. end ) S( x3 o' i( o* l2 x. P
    【正确代码】:
    + n2 m# v0 k& v# }; a& j% I1. 3 u2 F& f: ^' ~; z% ]
    2. for s = 1:10
      H4 @( f' f8 l& i% o2 O/ w: @3. a(s) = 4 * s - 1; 8 R0 y: G$ v/ M) H) K
    当然,这样的赋值使用循环是低效的,因此不提倡
    0 L6 ^  y3 i. w2 N( S# Z
    Undefined function or variable "a" 0 M6 y5 x/ C0 g7 ^
    中文解释:函数或变量 a 没有定义* B% O. F7 P% _3 @; Q  o' A9 p
    . x2 w/ o1 y7 m/ [8 i2 Z7 ?2 `
    出错原因及解决办法:
    2 D4 @: y/ b) K( ~$ V! {/ `
    8 F4 j( L& A5 k% B; K+ C1. 如果 a 是变量,则参见 [原创]写给学习 matlab 的新手们 一贴中技巧 6 后半部分
    7 E8 Z) A, I9 e8 Y2. 如果 a 是函数,则这是因为matlab在所有已添加的路径中都无法找到该函数对应的m文件而导致的,对此,把该m文件移动到当前路径下再运行便可。(注:何谓“所有已添加的路径”——在命令窗口中输入 pathtool 可以查看;何谓“当前路径”——在命令窗口中输入 pwd 可以查看)) A8 w/ \$ C  `

    7 @& {  H7 r* X* B7 m% \% R: A举例:
    8 h% b1 ]0 v% B% q4 j$ rmyPlus.m:
    ' c0 K9 x% G; ?: {) i* v1. function d = myPlus(a,b)
    3 j* \* W% R( o. ~. M" {# x* G2. d = a + b;
    4 D# ?, z7 r0 K! V! i5 ?【错误调用】:
    ) p7 p! G; c' f8 L' P0 q命令窗口:
    , J7 T4 W( Q, T0 k' v1. >> z = myPlus(a,b) 0 O5 y- W4 r+ S; \
    【正确调用】: 7 \" \- Y9 \% C9 X- f3 y' [0 f
    命令窗口: 7 g( U" u7 L- z% g6 `
    1. >> x = 2; ; k; c3 V* D1 ?% G  U
    2. >> y = 5; ! p5 L/ q6 e) z9 v& i

    , N# e" c: _/ P9 |# y$ z6 K' B9 L. y* U4 e" D0 p1 L+ T
    ' V+ Q/ o) z; [' `- v

    ; P7 u1 i1 d3 e2 i' d% ~
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-4-18 15:05 , Processed in 0.388626 second(s), 55 queries .

    回顶部