- 在线时间
- 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常见语法错误
, H5 f1 r, e- E& D1 [: h7 @( VSubscript indices must either be real positive integers or logicals , u" @; h) X5 p+ t1 A
中文解释:下标索引必须是正整数类型或者逻辑类型3 o& y8 A2 v3 h4 a: @3 Z+ f% S
6 P0 w& @4 \/ g
出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从 0 开始,要么出现了负数。注:matlab的语法规定矩阵的索引从 1 开始,这与 C 等编程语言的习惯不一样。
5 H/ a' X- S* B' c) Y ~" X. h- H& N% b
解决办法:自己调试一下程序,把下标为 0 或者负数的地方修正。关于矩阵的各种访问方式。 ) c4 U: Y* c0 p0 p) {4 [
' ?- J/ e4 H" } s
举例:
9 K: E. ?" n$ q【错误代码】:
}8 d# J" g8 X7 w1. for s = 0:0.2:2
8 |+ G( l5 @; ?) `" ^2. a(s) = 4 * s - 1; ; ]) p+ ?% H6 s0 Q; g: j* ?
3. end
" D; k0 A0 y/ ?& S9 u【正确代码】:
0 S- M4 s9 o7 \7 T% r5 J! b0 f% {1. : x: `0 @- m$ H9 R( h a9 ~; A: L
2. for s = 1:10 - e" H. K1 c) g9 W" t; @, Y% I
3. a(s) = 4 * s - 1; ( H5 [) \' E: g8 q# c+ x$ x
当然,这样的赋值使用循环是低效的,因此不提倡
3 e2 R8 N0 R# S5 ?" N M: tUndefined function or variable "a" $ n- b& M# \ R, q. B3 @4 l9 \
中文解释:函数或变量 a 没有定义1 M- n9 R/ }) J
4 x2 m7 D( g$ n* K% s% C. i
出错原因及解决办法:
! S" S, a, x U$ _4 p4 d0 l* K9 r2 H K0 D6 n1 W; p: I: T. N; H
1. 如果 a 是变量,则参见 [原创]写给学习 matlab 的新手们 一贴中技巧 6 后半部分
2 |! c+ D1 R# x0 R2. 如果 a 是函数,则这是因为matlab在所有已添加的路径中都无法找到该函数对应的m文件而导致的,对此,把该m文件移动到当前路径下再运行便可。(注:何谓“所有已添加的路径”——在命令窗口中输入 pathtool 可以查看;何谓“当前路径”——在命令窗口中输入 pwd 可以查看)' {8 t. N$ q% E
+ X* i! S' Y% ^* j* f1 y x
举例:
0 m* l- {4 P* |2 J. TmyPlus.m:
* n# [! b2 C" l! Q, B( ~( [& w1. function d = myPlus(a,b) 1 k/ @8 r1 B/ ]# U- U3 x: j
2. d = a + b;
+ Y+ {' Q* T, P5 p【错误调用】: " F: t2 E+ u3 D) |# l
命令窗口:
, j J% m" M ] R' ^1 d* R6 j1. >> z = myPlus(a,b) / w, V5 l& R' f, g( r0 \2 P, |+ k, g
【正确调用】:
, q! t" X3 \$ |; R4 K0 }命令窗口: 1 w2 _( C0 K4 h+ P, Z
1. >> x = 2; + [: d. b8 A( V
2. >> y = 5;
9 S5 W0 J9 d& g0 r* M* P) _/ {6 G* V$ {7 Q
6 B2 N) L( E, U/ s1 e) v: u
0 T. n, |1 \9 E& C6 m {& K" J$ [) e$ I9 r% f& S( T
|
zan
|