QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1733|回复: 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常见语法错误1 j- g: q; p6 v, t: K
    Subscript indices must either be real positive integers or logicals 3 S- z* K+ _0 v2 ]& _
    中文解释:下标索引必须是正整数类型或者逻辑类型$ v7 D* p4 n9 k* o% ^1 M% U- A- |

    6 x/ U6 x3 |- }5 D, m出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从 0 开始,要么出现了负数。注:matlab的语法规定矩阵的索引从 1 开始,这与 C 等编程语言的习惯不一样。* X+ t+ t2 M& x9 Q8 K
    0 ~$ m6 Z% H6 M) L& Z5 N" C4 K2 w
    解决办法:自己调试一下程序,把下标为 0 或者负数的地方修正。关于矩阵的各种访问方式。
    . ^; ]% A  g6 P( ~; Z8 c5 K
    6 @& F5 x, q+ ^% H- Z9 Z) S4 |1 J举例:
    4 _( S) ^9 k- M6 @7 J! v【错误代码】: $ [2 w5 V" Z) K+ _+ v! K8 O: P
    1. for s = 0:0.2:2 ! b& W9 V# i# e2 D# @) ~
    2. a(s) = 4 * s - 1;
      ~- p, X1 P$ K( e+ j0 n8 G& v3 e3. end ! p- _9 h* t. Q; v: l
    【正确代码】:
    ! K+ N9 Z, T7 Q' d2 v8 R1.
    % D  I+ m; q$ {( e$ t$ y) m5 }: n( W- ~  p2. for s = 1:10
    0 r: |2 l5 j' w% F7 U3. a(s) = 4 * s - 1; 4 h+ w# w1 n( l8 B6 u
    当然,这样的赋值使用循环是低效的,因此不提倡

    . U6 C/ f" s7 qUndefined function or variable "a" & T! N3 E2 W) ^
    中文解释:函数或变量 a 没有定义
    7 ~3 F' p) r3 _9 A- O0 s! R: B# H2 \# Y. k& j# X9 e8 d
    出错原因及解决办法:0 Z. I$ {! L1 j% k4 U9 I$ H

    ; o. I2 R% z* C. O2 L: Q, }1. 如果 a 是变量,则参见 [原创]写给学习 matlab 的新手们 一贴中技巧 6 后半部分; B7 d$ g& y( z: c
    2. 如果 a 是函数,则这是因为matlab在所有已添加的路径中都无法找到该函数对应的m文件而导致的,对此,把该m文件移动到当前路径下再运行便可。(注:何谓“所有已添加的路径”——在命令窗口中输入 pathtool 可以查看;何谓“当前路径”——在命令窗口中输入 pwd 可以查看)
    / Q. G$ h( t( c
      [+ Y: a6 G# c- @* F) J3 b举例:
    7 b- E) O7 \4 U' nmyPlus.m:
    ' O2 j! ]" H1 t( g: K1. function d = myPlus(a,b)
    * [# n( t/ s7 E* Y/ Q5 f# p* ]( W2. d = a + b; 9 J' R7 b+ m+ }, Q* E2 Q2 [; D
    【错误调用】: & W; Q3 L8 b7 k# y" t8 \: i
    命令窗口: " W* U. m1 O& k/ L& c' z
    1. >> z = myPlus(a,b)
    0 n0 ~  _! r3 [6 I! f) F! p& I7 M【正确调用】: + V! N* }8 P, V2 g; l6 b$ z; C6 l
    命令窗口: # a" H: V* t2 m3 i( p
    1. >> x = 2;
    , V7 I2 ~: G; i" G2. >> y = 5; 8 R* d6 g1 `8 k. \

    4 A: j4 s- P1 r9 A1 i& ~/ e5 j
    6 Y: L/ _) l: S1 v8 b( n# c& t4 p: D& \3 q  U  r
    ' t! t: x: c" Z  ^+ M: v, Q- p
    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-6-13 02:10 , Processed in 0.435968 second(s), 55 queries .

    回顶部