数学建模社区-数学中国

标题: Matlab常见语法错误(1) [打印本页]

作者: 百年孤独    时间: 2016-4-2 17:55
标题: Matlab常见语法错误(1)
Matlab常见语法错误
5 F3 D) a: N$ y. K' m* H, Q" K& CSubscript indices must either be real positive integers or logicals ! f/ ?0 d1 ]! F: O; M+ s
中文解释:下标索引必须是正整数类型或者逻辑类型. j* \6 U! m6 S' q
# l  W, s- A2 s4 B
出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从 0 开始,要么出现了负数。注:matlab的语法规定矩阵的索引从 1 开始,这与 C 等编程语言的习惯不一样。
3 p# f- u: v* G! }/ V% g& k! f3 [' X+ @* M
解决办法:自己调试一下程序,把下标为 0 或者负数的地方修正。关于矩阵的各种访问方式。 * l  C3 `4 _! }/ E
2 X5 J) m5 C9 n' A7 E4 Y- }& E* [
举例:
! c" ]7 q/ k, j3 S9 m【错误代码】: 4 v1 x, d8 K  Z( r
1. for s = 0:0.2:2
! h) L9 n2 _* a- W2. a(s) = 4 * s - 1; , b& K" w6 C7 J
3. end   F0 G( J' X7 O: t+ d0 q
【正确代码】:
) H' N) c) K! c& U/ F0 k6 }1. 2 o! x: M( x- S0 n  K9 m
2. for s = 1:10
1 y/ A- t4 x0 e* B6 F$ X: T0 \! K% W3. a(s) = 4 * s - 1; ; L% K! P8 X; b! b$ \
当然,这样的赋值使用循环是低效的,因此不提倡
1 ~7 e- E8 |$ r# T  X2 M  f. L
Undefined function or variable "a"
3 b6 U6 c& h7 i9 u- o% H2 a! V6 [中文解释:函数或变量 a 没有定义1 E' u2 q& ?4 Z/ C2 B
8 O4 U# r9 ~- q/ n
出错原因及解决办法:, Y$ S% M+ g5 w. U1 a: n

6 _* \$ g  G# E% {! H1. 如果 a 是变量,则参见 [原创]写给学习 matlab 的新手们 一贴中技巧 6 后半部分1 S4 N+ j# @0 h9 m* q* V+ N( r  |
2. 如果 a 是函数,则这是因为matlab在所有已添加的路径中都无法找到该函数对应的m文件而导致的,对此,把该m文件移动到当前路径下再运行便可。(注:何谓“所有已添加的路径”——在命令窗口中输入 pathtool 可以查看;何谓“当前路径”——在命令窗口中输入 pwd 可以查看)# a- i+ N7 k9 `& M- _! z
9 b: b! p3 u2 q0 A; Y. k
举例:
: |, {. d- a: N: Z, l+ B5 b" kmyPlus.m:
7 k% I( z& L7 l" A1. function d = myPlus(a,b) " q% E1 U8 p0 m; d+ x& w" f
2. d = a + b;
7 i4 @- I  y+ B; A( {【错误调用】: % g! D( d4 ^4 d: v6 V/ ^
命令窗口: / W; }, }1 ]# k* ]/ d% B
1. >> z = myPlus(a,b) " H$ t+ k2 _1 E" Z
【正确调用】: ( `+ U2 V) i# G! I
命令窗口:
+ M# @( v* N$ ]1 N+ E1. >> x = 2;
5 L/ G( F2 {0 n8 H0 x. c. R" _* [2. >> y = 5;
$ \6 \$ k' G+ v3 p! V* n! q* z$ ?7 C& W) c3 K  @
8 p( ~0 I/ |4 j( J' H+ [# I& k. _" g$ Y
8 f) l1 ], P$ q( ?! h1 m! H
$ }; i* K8 O( N) C" Y; E8 x( v





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5