- 在线时间
- 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常见语法错误1 h! c* k) g: T# c
Subscript indices must either be real positive integers or logicals
' t# J; C1 e0 B+ D: L中文解释:下标索引必须是正整数类型或者逻辑类型
: k1 t; T- o4 k2 }' U% U2 q
: q5 h. I9 j( K+ a( ~( R& P出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从 0 开始,要么出现了负数。注:matlab的语法规定矩阵的索引从 1 开始,这与 C 等编程语言的习惯不一样。; q& b' W/ G3 n( \
* Z% M+ K& y' ?. O' X2 |# U$ ~ x解决办法:自己调试一下程序,把下标为 0 或者负数的地方修正。关于矩阵的各种访问方式。 5 m: s+ g( l# ?2 k/ k
8 ?, K B# L7 d7 a- a. \% G; o' ]
举例:
4 a+ |; y: F: q9 W! T【错误代码】:
" M2 H4 P6 W5 }( u2 M1. for s = 0:0.2:2
. a+ {2 ?. r5 j+ A$ A, |! p8 g2. a(s) = 4 * s - 1; 6 E/ u, o$ g+ a2 `% Q# g
3. end
2 |: {' Y# O& E! G- S) ]% s3 b# q【正确代码】: 2 D* e+ Z/ s( d6 d
1. 3 C, |, ]5 L# Y- m: O8 j8 s! w5 e
2. for s = 1:10
+ S, ?. R7 _6 L& M3. a(s) = 4 * s - 1; ! V8 R, d& q5 E% k6 V Y+ Q
当然,这样的赋值使用循环是低效的,因此不提倡6 G0 z. x7 h% y$ o. c! o8 `
Undefined function or variable "a" ! L7 d! i: q0 P2 x+ g5 v
中文解释:函数或变量 a 没有定义
/ s: {4 S9 @* a5 F3 }
+ y, i2 q+ d2 X出错原因及解决办法:
6 A) H$ i1 u3 ?' p, E
+ K% [, N E3 j! q+ k1. 如果 a 是变量,则参见 [原创]写给学习 matlab 的新手们 一贴中技巧 6 后半部分
' q) u7 _5 v+ s1 `! x8 J2. 如果 a 是函数,则这是因为matlab在所有已添加的路径中都无法找到该函数对应的m文件而导致的,对此,把该m文件移动到当前路径下再运行便可。(注:何谓“所有已添加的路径”——在命令窗口中输入 pathtool 可以查看;何谓“当前路径”——在命令窗口中输入 pwd 可以查看); |" _: z, H, \' z1 Z8 n. H+ m
/ v& `) C N, Q' x2 z8 d举例:# j( S5 Q$ p0 @# D# h. I! Z- p5 a
myPlus.m:
+ E4 t' [" w! |- g1. function d = myPlus(a,b)
9 n+ w6 c: ~# `, M2. d = a + b; 0 c& b7 w+ c( [. Q" B& _5 f, J* N+ N8 f, N% E
【错误调用】:
( G- i( {+ G( I( D) U8 S; I; z命令窗口:
( ~9 c8 R. D8 }. i1. >> z = myPlus(a,b) & o. F4 F/ M% [" x5 J0 c; d- o, E
【正确调用】:
: |, N: K" ~! P8 v4 R命令窗口:
- l/ E) g2 ^* _+ ]1. >> x = 2;
0 W- E# J8 l; V; a- r2. >> y = 5;
% ?& B( u& K# W+ Z# L0 V
" `3 @2 W- w- m+ G
) q2 k0 |7 U. x& I* O& F' X- W3 X2 _1 e* c+ }) K
g/ m( E7 u( a! W' z5 ] |
zan
|