- 在线时间
- 2759 小时
- 最后登录
- 2017-9-15
- 注册时间
- 2011-4-3
- 听众数
- 538
- 收听数
- 4
- 能力
- 80 分
- 体力
- 1764 点
- 威望
- 27 点
- 阅读权限
- 150
- 积分
- 5990
- 相册
- 0
- 日志
- 0
- 记录
- 5
- 帖子
- 6675
- 主题
- 3503
- 精华
- 3
- 分享
- 6
- 好友
- 1721
TA的每日心情 | 开心 2017-2-7 15:12 |
|---|
签到天数: 691 天 [LV.9]以坛为家II
 群组: 2013年国赛赛前培训 群组: 2014年地区赛数学建模 群组: 数学中国第二期SAS培训 群组: 物联网工程师考试 群组: 2013年美赛优秀论文解 |
Matlab常见语法错误8 |6 T/ e* ^6 X. h% _2 T5 u
Subscript indices must either be real positive integers or logicals . }/ j r% _+ j8 b* h( Q& _$ {
中文解释:下标索引必须是正整数类型或者逻辑类型
# r( V. O0 v# H" E
. H$ v0 z& Y/ g7 k4 I. B出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从 0 开始,要么出现了负数。注:matlab的语法规定矩阵的索引从 1 开始,这与 C 等编程语言的习惯不一样。+ i7 ^) v$ \9 x& {' r
5 N" t( k% `3 Y+ i3 q( n
解决办法:自己调试一下程序,把下标为 0 或者负数的地方修正。关于矩阵的各种访问方式。
% }/ @8 D& o0 h
- e6 w- N, `9 a* ?举例:8 x: b: ^& F6 Q9 R% i( y
【错误代码】: % `3 V' L' [( I' c7 M4 K. T) i
1. for s = 0:0.2:2 # H u. E" ^8 m- K: U% g- t
2. a(s) = 4 * s - 1; + k+ b2 @; F7 k
3. end
9 b7 G! L2 X$ r【正确代码】: 2 {3 D% v0 z7 e& `! T( M$ a) z; A
1. - o; r7 e; ]6 j$ ]6 G9 L! p
2. for s = 1:10 , o# K0 ^6 `2 }; Z
3. a(s) = 4 * s - 1;
6 `! _, m/ j: V0 T3 ` N% @; N9 i当然,这样的赋值使用循环是低效的,因此不提倡
$ Q. E; V! G4 wUndefined function or variable "a" 4 [, W9 ?! _2 H5 b* A; d' E
中文解释:函数或变量 a 没有定义$ {$ I! {! P! d! C7 p; f. l
/ K5 n" _/ A: R$ c# i* ~- k2 I6 `) ]6 j出错原因及解决办法:
/ ]* v b/ P$ _
9 o& g& ~$ g8 Q3 D# q* M: p# a1. 如果 a 是变量,则参见 [原创]写给学习 matlab 的新手们 一贴中技巧 6 后半部分
* W9 w5 h# E$ ?, [* L' n: V+ }3 g+ B- W2. 如果 a 是函数,则这是因为matlab在所有已添加的路径中都无法找到该函数对应的m文件而导致的,对此,把该m文件移动到当前路径下再运行便可。(注:何谓“所有已添加的路径”——在命令窗口中输入 pathtool 可以查看;何谓“当前路径”——在命令窗口中输入 pwd 可以查看). y* h" y7 K/ u& Z4 [
& u9 @: m% }$ y4 P0 z
举例:" S2 _ j/ S4 E' N6 |
myPlus.m: 8 W0 M! E0 i* W# _7 U' h
1. function d = myPlus(a,b) / W' v* F: K) o4 E+ Y) k- j% |
2. d = a + b;
Z, C+ O3 I) j( I【错误调用】:
4 _; I/ W: }# M) t9 f3 b$ U+ n命令窗口:
# X& e2 ?4 D: q- T' S* ]1. >> z = myPlus(a,b) m/ g$ e/ C; O' P' b
【正确调用】: 2 s) F9 L3 C6 {- v6 x0 R
命令窗口:
0 E ~3 {" d% U S$ \% @! C( ~) J1. >> x = 2; : H3 D6 z" x1 S) C. o/ _1 p
2. >> y = 5;
4 h# ^+ P2 z* i2 k% y" z- z6 {* A9 W
+ y% {2 {9 G% z" H
: W f: Z) [9 ~1 I4 b6 c: ]
3 r; j2 V O( P
|
zan
|