- 在线时间
- 2759 小时
- 最后登录
- 2017-9-15
- 注册时间
- 2011-4-3
- 听众数
- 538
- 收听数
- 4
- 能力
- 80 分
- 体力
- 1764 点
- 威望
- 27 点
- 阅读权限
- 150
- 积分
- 5990
- 相册
- 0
- 日志
- 0
- 记录
- 5
- 帖子
- 6675
- 主题
- 3503
- 精华
- 3
- 分享
- 6
- 好友
- 1721
TA的每日心情 | 开心 2017-2-7 15:12 |
|---|
签到天数: 691 天 [LV.9]以坛为家II
 群组: 2013年国赛赛前培训 群组: 2014年地区赛数学建模 群组: 数学中国第二期SAS培训 群组: 物联网工程师考试 群组: 2013年美赛优秀论文解 |
Matlab常见语法错误6 x8 }" W1 B3 n$ g+ `7 V8 f2 m! U. X
Subscript indices must either be real positive integers or logicals
* u! U3 x5 v$ Y/ [- Q) A中文解释:下标索引必须是正整数类型或者逻辑类型+ [% n% K6 ?+ Z" ?
# X0 V9 T; j* Q, ]( w) n8 N
出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从 0 开始,要么出现了负数。注:matlab的语法规定矩阵的索引从 1 开始,这与 C 等编程语言的习惯不一样。! i7 y* b" {$ a; I7 t& C
9 s: x+ B+ h2 V/ n解决办法:自己调试一下程序,把下标为 0 或者负数的地方修正。关于矩阵的各种访问方式。
! e4 \0 t5 t u* T2 i7 t7 ^! R T' m1 N/ Y' ?
举例:1 w8 T8 k4 [* Z. N
【错误代码】: 4 D6 `* R/ p: I6 ?% U! f) O
1. for s = 0:0.2:2
+ t* B/ C' W- e- |* L- o2. a(s) = 4 * s - 1;
$ c. g7 y2 P/ t2 A3. end
, r; I5 d# R1 y x【正确代码】:
7 J; B; Y4 G8 @0 p/ b1. / V/ W, K+ @3 L: K) g& Z% T2 R
2. for s = 1:10
1 P Y) R+ Z6 U: {& G8 r3. a(s) = 4 * s - 1; S8 K c8 k4 Z8 M2 Z* O
当然,这样的赋值使用循环是低效的,因此不提倡% \ I0 [' v7 Z8 ?8 u5 |
Undefined function or variable "a" 5 U0 R& r& s+ w) j
中文解释:函数或变量 a 没有定义0 f" C! {% R' W% H8 q1 \% c
I4 `* n8 I2 o( l
出错原因及解决办法:
7 k! i* K; u4 x. J. n: S
$ z, K! j. z# R# l- o; Z7 S1. 如果 a 是变量,则参见 [原创]写给学习 matlab 的新手们 一贴中技巧 6 后半部分
i0 c2 J# o( s2 `: x2. 如果 a 是函数,则这是因为matlab在所有已添加的路径中都无法找到该函数对应的m文件而导致的,对此,把该m文件移动到当前路径下再运行便可。(注:何谓“所有已添加的路径”——在命令窗口中输入 pathtool 可以查看;何谓“当前路径”——在命令窗口中输入 pwd 可以查看)
5 ?4 I# f3 k* }# g$ G, s
# t" Q. Y3 A$ a4 o1 O- ]举例:
, d2 A U- z# e$ xmyPlus.m:
1 [1 W" Q! v5 y$ d0 @' a/ G Z1. function d = myPlus(a,b) ' X6 \6 c/ A( F3 Y4 R6 j
2. d = a + b;
7 }: m. H& X# {, s; b( b& I【错误调用】:
* ~7 W! R0 t3 h' B" R命令窗口: , L6 Q/ d' c5 v0 i
1. >> z = myPlus(a,b)
" M! Z1 N* z/ ?- G0 w【正确调用】: , H* q y; q6 P6 |' i$ T* u
命令窗口: : `, g$ z/ }9 T$ X7 C1 ]
1. >> x = 2;
+ I3 y e0 h0 A* ?6 E7 s2. >> y = 5;
: I3 E6 Z# K, D: m) x$ M, W/ |/ `1 ?7 Y: ~7 c2 x
- H" C0 U2 |1 R [: x( q. N9 Q! N" L
5 D1 ^$ ]6 G( D* [ |
zan
|