- 在线时间
- 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常见语法错误
$ 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
|