QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1732|回复: 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常见语法错误2 m/ ^* v3 d* t+ Y* ]+ p
    Subscript indices must either be real positive integers or logicals
    0 q* j# j5 M- [' R3 w/ r中文解释:下标索引必须是正整数类型或者逻辑类型( Y6 V1 O# m2 D- j0 |% t( X
    8 p: x% Y$ `' q6 s0 \3 D* A1 q
    出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从 0 开始,要么出现了负数。注:matlab的语法规定矩阵的索引从 1 开始,这与 C 等编程语言的习惯不一样。; c# `7 n( ~4 `( c  d

    9 T" d7 `2 E! s3 h/ H/ m解决办法:自己调试一下程序,把下标为 0 或者负数的地方修正。关于矩阵的各种访问方式。
    1 l$ l2 t; \8 q- E+ J5 U
    # l) j. p# n; W0 N1 F6 b4 q7 y举例:- _  x) t* Q, c' F, B/ \1 r
    【错误代码】:
    & S& Z. z& w9 ^0 |# q7 M1. for s = 0:0.2:2 8 c1 X7 P9 _' X( b+ w- D5 `
    2. a(s) = 4 * s - 1;
    , ^* G) C( g) ^+ |4 r) H, W3. end
    5 @9 X. a2 |# d. }) c【正确代码】:
    ( }1 U, G( I0 h* T$ r- `1. , {! A9 m; A' @$ h
    2. for s = 1:10 , g! e& n$ a# O. h7 f
    3. a(s) = 4 * s - 1;
    , M, H0 O" C* J- p当然,这样的赋值使用循环是低效的,因此不提倡
    , U4 F$ U% `; Z. f- \) k
    Undefined function or variable "a" $ T: I: Q; |/ i9 S2 A' G
    中文解释:函数或变量 a 没有定义
    + t2 Z7 S3 R2 B1 F$ I- p. {2 [5 g/ [+ v
    出错原因及解决办法:6 `( T: q8 I2 }9 p" L

    9 T, b' `2 ~, d* G" m6 l, D% P- h1. 如果 a 是变量,则参见 [原创]写给学习 matlab 的新手们 一贴中技巧 6 后半部分
    8 U* F) q1 n/ v2 Y6 g4 S9 Q2. 如果 a 是函数,则这是因为matlab在所有已添加的路径中都无法找到该函数对应的m文件而导致的,对此,把该m文件移动到当前路径下再运行便可。(注:何谓“所有已添加的路径”——在命令窗口中输入 pathtool 可以查看;何谓“当前路径”——在命令窗口中输入 pwd 可以查看)
    $ O/ b: R1 a- E2 H/ U2 f3 t3 X( b# p3 Z1 f+ w& {
    举例:4 k/ s  f& d! z
    myPlus.m:
    + b, ?  Z! u" R' d0 b0 Y& x1. function d = myPlus(a,b) . D/ j( g1 T4 d. J% D4 h+ O* Z
    2. d = a + b;
    ' O6 N( j+ a/ l! T. ?4 ?' N: _【错误调用】: - y4 a5 M- `, G7 \- v$ h3 F6 k
    命令窗口:
    2 Y6 i% x( V+ w# ~' X7 D1. >> z = myPlus(a,b)
    3 @2 F% J$ g9 l! X【正确调用】: ( ^( U  q- i" @2 x5 x2 n4 H
    命令窗口: / j0 v; A6 W4 R7 [# U4 k# D* a
    1. >> x = 2; " N4 ]( w8 x0 H' l7 d
    2. >> y = 5;
    5 x* ~, l' Q- {  }% h, E+ \9 s
    ; @' B8 R* [) Q; J7 m! a) E
    ) K4 j0 \7 o4 m+ f
    3 j/ a" i) g; S; d" \8 j/ |% f& y( r
    ) [( a/ c  _" r- @) E
    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 00:45 , Processed in 0.384876 second(s), 58 queries .

    回顶部