数学建模社区-数学中国

标题: 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! O3. end
' _6 J& I9 l) \$ c4 `2 y【正确代码】:
, N6 c4 Y7 t' E& m! c1. ) ^* ]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" p1. 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$ s1. >> 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( f2. >> 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