Matlab常见语法错误 & j O* _8 X! F* a7 c) QSubscript indices must either be real positive integers or logicals + _0 ?. E' ^3 M! X; F中文解释:下标索引必须是正整数类型或者逻辑类型2 F' Y7 E S/ H& f* e
' @! P! ^7 S- g2 m. S6 O. _出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从 0 开始,要么出现了负数。注:matlab的语法规定矩阵的索引从 1 开始,这与 C 等编程语言的习惯不一样。' n Z0 Z+ }# D6 ~# c0 _" [
0 \; o* x% i+ T* m9 }# |
解决办法:自己调试一下程序,把下标为 0 或者负数的地方修正。关于矩阵的各种访问方式。 ' D& v3 J8 `, {8 j9 ]1 f 9 u3 M5 B. e) X' d! `# O* U+ e5 P B$ U举例:1 N% P) Q& r& a) v* o2 q
【错误代码】: 1 Z+ t8 j; A( n' ~" \( \. X2 S1. for s = 0:0.2:2 . v' z, @+ f5 [2. a(s) = 4 * s - 1; 9 K2 }7 X6 b# K$ ]' }' e( L3. end 5 f- ?: m3 N- G1 [3 X+ a9 M
【正确代码】: / K+ _( N# o) B3 u P. k1. ; F0 }3 M% s& l( p4 R' i
2. for s = 1:10 ' w$ ^5 M3 S& w( S9 C6 z/ ]3. a(s) = 4 * s - 1; # j+ n, I/ B7 D" q+ i9 s当然,这样的赋值使用循环是低效的,因此不提倡2 U( T$ A r& I9 S% }' ?1 t: [
Undefined function or variable "a" 5 C- c9 u- K, O5 s- V中文解释:函数或变量 a 没有定义' c7 d; s0 d' A6 k* ^% X& v
* r5 d- [: O3 K2 ]# @, J/ J出错原因及解决办法:" B3 V1 M _8 J- d2 Q# Z, y
0 r+ W. B& O& }/ k/ W
1. 如果 a 是变量,则参见 [原创]写给学习 matlab 的新手们 一贴中技巧 6 后半部分' @; G. B) E& m+ z' y8 j
2. 如果 a 是函数,则这是因为matlab在所有已添加的路径中都无法找到该函数对应的m文件而导致的,对此,把该m文件移动到当前路径下再运行便可。(注:何谓“所有已添加的路径”——在命令窗口中输入 pathtool 可以查看;何谓“当前路径”——在命令窗口中输入 pwd 可以查看) ! R' H2 v# u& ~5 D7 P) |* ]4 @6 J% N# _0 w: F
举例: ) ~) x! [ c( b) r4 j" AmyPlus.m: 4 [6 [0 N- M' ^) v0 G
1. function d = myPlus(a,b) , N% S- a8 S, E% w. p) \2. d = a + b; * h& v4 r$ {+ h0 C- j' e$ l
【错误调用】: * G, z& q1 i1 v8 B- Z4 L r( v+ D: K1 g命令窗口: ' L4 W* G* j# ^1. >> z = myPlus(a,b) / F1 X+ J7 l9 y$ h# h2 F; K; e
【正确调用】: 7 [3 ]& M3 e. g8 f- u- w* g) c
命令窗口: ! k/ x( j) _& _; V) t
1. >> x = 2; / W% P# O+ p% J
2. >> y = 5; 2 v* a+ a) L) g- [9 `
, n. ~. v/ I5 ]( Z