数学建模社区-数学中国
标题:
Matlab常见语法错误(1)
[打印本页]
作者:
百年孤独
时间:
2016-4-2 17:55
标题:
Matlab常见语法错误(1)
Matlab常见语法错误
- B" {1 l; |7 E' H# C/ q7 R! ^
Subscript indices must either be real positive integers or logicals
5 g6 X# [$ ?- ?
中文解释:下标索引必须是正整数类型或者逻辑类型
1 T3 U. c l- f
$ R, b0 Z+ G* j$ n: Y3 Z9 o) y
出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从 0 开始,要么出现了负数。注:matlab的语法规定矩阵的索引从 1 开始,这与 C 等编程语言的习惯不一样。
8 a( a7 J! I6 ?! Y4 o( w) r( ?
0 k' o2 {) P- a1 B5 L& _
解决办法:自己调试一下程序,把下标为 0 或者负数的地方修正。关于矩阵的各种访问方式。
! b9 J) H% j6 V2 e
- t* U5 x0 s- P1 C8 X
举例:
& L/ W- [" k3 p
【错误代码】:
' j! H2 L. n1 p# s' r- \( [
1. for s = 0:0.2:2
% [: V5 K9 l I! \
2. a(s) = 4 * s - 1;
( s6 F8 }, I5 f. ], h! O
3. end
' _6 J& I9 l) \$ c4 `2 y
【正确代码】:
, N6 c4 Y7 t' E& m! c
1.
) ^* ]5 u& A4 r$ Y
2. for s = 1:10
' `& p# r1 {8 b
3. a(s) = 4 * s - 1;
/ O5 t+ s% N" k7 Z, O P
当然,这样的赋值使用循环是低效的,因此不提倡
5 j. d% L& W6 c6 j
Undefined function or variable "a"
9 V. [/ M6 T( R6 }& K
中文解释:函数或变量 a 没有定义
0 c _) a# E4 J5 C/ u" X! n: z
+ D! j2 \8 ~! x" }5 L5 p: U ~
出错原因及解决办法:
9 F% d& z; S1 k2 K
+ m$ r5 Y' V9 z& Y
1. 如果 a 是变量,则参见 [原创]写给学习 matlab 的新手们 一贴中技巧 6 后半部分
( v' r. ]6 P# ^
2. 如果 a 是函数,则这是因为matlab在所有已添加的路径中都无法找到该函数对应的m文件而导致的,对此,把该m文件移动到当前路径下再运行便可。(注:何谓“所有已添加的路径”——在命令窗口中输入 pathtool 可以查看;何谓“当前路径”——在命令窗口中输入 pwd 可以查看)
( l8 I2 D7 Y# v7 f
b5 G5 n. w A! I! R
举例:
) k5 ^- J8 r! t, R0 P
myPlus.m:
- {" ~' E0 u# a$ W" p
1. function d = myPlus(a,b)
6 e* L7 [# Q. |+ k8 m: K
2. d = a + b;
% C Q: a% [- Q$ p/ n6 j; S
【错误调用】:
( Y8 y. F5 B, \1 h! f: f4 P
命令窗口:
5 u6 W/ K. Q9 q1 t9 C: `; Z$ s
1. >> z = myPlus(a,b)
1 a9 L: Q8 X1 J1 y: I0 }
【正确调用】:
! \5 ?9 r1 W, T
命令窗口:
+ m+ r1 N$ w% g+ F: w
1. >> x = 2;
+ v: }6 T' T& H G' w. X( f
2. >> y = 5;
2 C' T& X6 u5 R' J) \
, n, h0 S3 d! D1 P% Z7 Z/ B/ X8 V
- t2 X+ X7 j8 J8 E+ |% m- K! S
5 J5 `9 _! Q N$ H* a. E4 ]8 C( r: s
* V" I5 d' J/ h' e. C# G
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5