数学建模社区-数学中国
标题:
Matlab常见语法错误(1)
[打印本页]
作者:
百年孤独
时间:
2016-4-2 17:55
标题:
Matlab常见语法错误(1)
Matlab常见语法错误
8 I% C$ T7 V2 j
Subscript indices must either be real positive integers or logicals
$ c: m/ O5 @6 S2 |
中文解释:下标索引必须是正整数类型或者逻辑类型
. N! u1 H# T# ~3 |! S7 X% o4 d# q5 t
2 n }3 R: r3 W. b
出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从 0 开始,要么出现了负数。注:matlab的语法规定矩阵的索引从 1 开始,这与 C 等编程语言的习惯不一样。
6 R( T! [& S: S# L0 e! t* E
; @0 d6 d1 m. X) ~- d. m% {
解决办法:自己调试一下程序,把下标为 0 或者负数的地方修正。关于矩阵的各种访问方式。
/ x" L; x, q+ J) w/ x1 p
( `! s7 }+ _/ k3 G
举例:
: l1 _; V) y, H3 d$ v% ~
【错误代码】:
: N8 f2 ?+ _$ \5 w
1. for s = 0:0.2:2
3 g; }+ t% j! H
2. a(s) = 4 * s - 1;
& t4 J+ ^& p! J$ T* F& ~3 s
3. end
9 a+ V5 k3 g0 k% i. ]' K6 |
【正确代码】:
" A9 A" r: T# _7 g9 D$ \# g
1.
. X4 a* E% x$ Z( q' [9 k7 V1 o
2. for s = 1:10
s- j$ g& y* t9 J8 E* E! u
3. a(s) = 4 * s - 1;
7 u/ y4 x: L4 z* {. c
当然,这样的赋值使用循环是低效的,因此不提倡
. v" g" j, T- y7 Q0 {$ Y8 Z
Undefined function or variable "a"
1 M* s$ r1 I1 v3 ]+ \/ x( C
中文解释:函数或变量 a 没有定义
' B7 j) H3 i5 R3 m. y" ~: t
2 W1 C' Q3 \3 n5 j) x
出错原因及解决办法:
$ H9 \$ w6 D/ n! ]9 v- q4 J! ?$ Y- a$ Q
. ~" Y2 m( ?- X; Y8 h% Y% N
1. 如果 a 是变量,则参见 [原创]写给学习 matlab 的新手们 一贴中技巧 6 后半部分
8 k( j' A) y# r: N
2. 如果 a 是函数,则这是因为matlab在所有已添加的路径中都无法找到该函数对应的m文件而导致的,对此,把该m文件移动到当前路径下再运行便可。(注:何谓“所有已添加的路径”——在命令窗口中输入 pathtool 可以查看;何谓“当前路径”——在命令窗口中输入 pwd 可以查看)
- ?7 e1 U& m+ ?) Y
6 l% I# X1 u4 [! q
举例:
) z& C! s2 s2 U1 r
myPlus.m:
7 H s4 {& o u8 j
1. function d = myPlus(a,b)
! z! V, T i% H" ?7 k' C
2. d = a + b;
6 U) M; w; \6 h' f- C9 j* w
【错误调用】:
! g# J" N+ Y* u
命令窗口:
# }# V9 C2 r% k, d' m8 E
1. >> z = myPlus(a,b)
p" a6 G5 u {( ^
【正确调用】:
$ X `% H, @; r- R& K/ a
命令窗口:
/ ~, n) E3 J8 s% g2 Y, S3 k/ h
1. >> x = 2;
# r4 }2 U9 C7 X6 F% l$ D# ?) p
2. >> y = 5;
8 m5 ]- l z5 b8 C8 ]: l
2 b7 c0 t7 q# u2 n
/ A0 l8 h! f! `! g. e0 n2 L: n5 G
# ~+ g/ J4 Z/ K& F0 [9 I
5 \+ p* b) ^5 G2 q' N
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5