- 在线时间
- 2759 小时
- 最后登录
- 2017-9-15
- 注册时间
- 2011-4-3
- 听众数
- 538
- 收听数
- 4
- 能力
- 80 分
- 体力
- 1764 点
- 威望
- 27 点
- 阅读权限
- 150
- 积分
- 5990
- 相册
- 0
- 日志
- 0
- 记录
- 5
- 帖子
- 6675
- 主题
- 3503
- 精华
- 8
- 分享
- 6
- 好友
- 1721
TA的每日心情 | 开心 2017-2-7 15:12 |
---|
签到天数: 691 天 [LV.9]以坛为家II
 群组: 2013年国赛赛前培训 群组: 2014年地区赛数学建模 群组: 数学中国第二期SAS培训 群组: 物联网工程师考试 群组: 2013年美赛优秀论文解 |
Matlab常见语法错误5 c& \/ a- w+ L+ R R0 K0 w
Subscript indices must either be real positive integers or logicals
! x( ] F+ \: x8 H中文解释:下标索引必须是正整数类型或者逻辑类型
m$ u' _1 D% ]& P2 X
. u0 Q/ P5 G5 \. \: s出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从 0 开始,要么出现了负数。注:matlab的语法规定矩阵的索引从 1 开始,这与 C 等编程语言的习惯不一样。
% l) B. V. R3 k8 P* g$ p5 L0 f( U& h: b2 Q; t0 Z
解决办法:自己调试一下程序,把下标为 0 或者负数的地方修正。关于矩阵的各种访问方式。 " E( h$ A: a& F+ b# a# K) x% ~/ ]; y
- g2 Y [1 O6 R6 J) j
举例:
: ?6 L' m$ Z: q9 E0 j【错误代码】: & b# j8 Y2 k3 g: w. |
1. for s = 0:0.2:2 ( D: J. ^" g* [2 y v5 Y
2. a(s) = 4 * s - 1; ( g; O; `4 r/ Q$ K
3. end ' [& K/ Z; s! Q; t9 i3 k: S
【正确代码】:
! K" E- A0 f. O% U0 \1.
7 C9 k' g: b( S4 c$ B$ `$ w! U2. for s = 1:10
# j8 W6 H7 d# p5 o% v+ R3. a(s) = 4 * s - 1; 1 i( g( C/ Y* |' Z
当然,这样的赋值使用循环是低效的,因此不提倡
4 K3 A* R0 |: L% ]( A/ } |Undefined function or variable "a"
8 @6 k+ O/ N( j9 }中文解释:函数或变量 a 没有定义
9 Q* m r5 T8 E, i% m' }# ~3 i7 Z* V: ?
出错原因及解决办法:
( C" p% ^2 s2 V4 m3 e4 g, q9 _8 ~9 l! M
1. 如果 a 是变量,则参见 [原创]写给学习 matlab 的新手们 一贴中技巧 6 后半部分) d h( t- N5 W& x' i
2. 如果 a 是函数,则这是因为matlab在所有已添加的路径中都无法找到该函数对应的m文件而导致的,对此,把该m文件移动到当前路径下再运行便可。(注:何谓“所有已添加的路径”——在命令窗口中输入 pathtool 可以查看;何谓“当前路径”——在命令窗口中输入 pwd 可以查看)
) I5 x+ }- k' H2 D) u6 C& O+ p: \4 Y) Q, q
举例:
5 G* u6 [& U7 A! y+ ^, i! VmyPlus.m: x; b. c. p: e8 A; H) e
1. function d = myPlus(a,b)
, U2 G% ]/ t0 A2. d = a + b; , M: q2 J" d' ?( Q2 r5 U, y3 e% g
【错误调用】: - {+ H) r8 P. V! @/ z! }2 H6 l
命令窗口:
# ^7 ]; _4 |4 t7 |+ C" D* X1. >> z = myPlus(a,b) ( w4 c. K% {! e) K% x
【正确调用】:
+ M7 A* G/ B! O, n' u- {# d5 V7 [命令窗口:
! `) \8 C6 S) |. X1. >> x = 2;
0 n, \' V9 t! N6 h9 z" B- E* B2. >> y = 5;
% o4 m$ n. S( a5 R0 g* N1 G) g* V6 L) n4 ^
# ~( l4 q( X. W5 X% {7 W9 H6 a. a" w/ d' j
* F2 N: `: s8 F8 O1 w' t& ]$ ?
|
zan
|