数学建模社区-数学中国
标题:
Matlab常见语法错误(1)
[打印本页]
作者:
百年孤独
时间:
2016-4-2 17:55
标题:
Matlab常见语法错误(1)
Matlab常见语法错误
5 F3 D) a: N$ y. K' m* H, Q" K& C
Subscript 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- W
2. 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% W
3. 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% {! H
1. 如果 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" k
myPlus.m:
7 k% I( z& L7 l" A
1. 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+ E
1. >> 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