- 在线时间
- 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常见语法错误
# x; ~$ |% ~( f+ x0 z2 i" u% TSubscript indices must either be real positive integers or logicals
4 H3 O8 \: m' M2 \! A中文解释:下标索引必须是正整数类型或者逻辑类型
5 |; g4 m8 v! J5 C5 }* P" K% I
4 A- C Y+ ^7 u9 u+ l出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从 0 开始,要么出现了负数。注:matlab的语法规定矩阵的索引从 1 开始,这与 C 等编程语言的习惯不一样。
6 H/ S7 V3 J$ r& [6 r* m
. S& Y0 ?9 ~9 n4 Q0 ^9 m解决办法:自己调试一下程序,把下标为 0 或者负数的地方修正。关于矩阵的各种访问方式。
# \# a' S( w% ~2 ]( b( ]( ~7 o3 w- k N" K8 R- H G
举例: }/ W) v' C$ ]( s0 R. d1 F4 ]
【错误代码】: 8 ]5 m8 ^0 A# d' S; s
1. for s = 0:0.2:2
- Y3 f7 {1 _0 { K! b7 o2. a(s) = 4 * s - 1;
: H' r; \7 V1 w$ a& w3. end
% ]8 q$ A+ K' D& f6 j" v9 {【正确代码】: 2 p; }6 U1 ?/ }5 P
1.
; B9 N7 ~8 Z x; ^4 W1 n2. for s = 1:10
+ R5 H/ ^& l1 }" x2 O# s1 M3. a(s) = 4 * s - 1; - v) {" S( X, q" B0 C& U
当然,这样的赋值使用循环是低效的,因此不提倡* t8 ]: `) b7 v
Undefined function or variable "a"
l1 ~* {. Q" E. e( W: _中文解释:函数或变量 a 没有定义$ @1 s" L; Z. C- d% l6 Q" @4 J
* S- Y N3 J, N出错原因及解决办法:
" @3 d* O; i2 G% W
8 X4 I5 r" `; E7 c' o2 z1 [- Z7 ~1. 如果 a 是变量,则参见 [原创]写给学习 matlab 的新手们 一贴中技巧 6 后半部分
; {/ Y: H) x+ D5 A% x9 s$ b2. 如果 a 是函数,则这是因为matlab在所有已添加的路径中都无法找到该函数对应的m文件而导致的,对此,把该m文件移动到当前路径下再运行便可。(注:何谓“所有已添加的路径”——在命令窗口中输入 pathtool 可以查看;何谓“当前路径”——在命令窗口中输入 pwd 可以查看)
: a+ N; d0 u6 s+ Z. M+ a3 e
) {3 U s' p3 d举例:, P/ S* i7 r7 X7 \: O# ^
myPlus.m:
0 C4 t4 B0 A0 b/ K1. function d = myPlus(a,b) 1 N! B( q" M+ @+ q# B* r
2. d = a + b;
x4 K7 u2 b* i【错误调用】: - b/ }& u/ t7 K# g
命令窗口:
0 J2 f5 x, z8 Z, w1. >> z = myPlus(a,b) $ h; m# K% Q" e9 `4 F5 {" w
【正确调用】: $ R& C9 c/ E( C" x& z( K7 d
命令窗口: 1 ?' q w& R0 J. w/ O& i+ L, [
1. >> x = 2; . I6 Q: b! ?$ w8 {" I9 v* d
2. >> y = 5;
$ }& Q1 t# B! p0 v! ~( k3 S6 o3 w9 Y1 l: o" Y9 U$ w) L7 G" B4 M
1 [! t3 {/ y- Y+ e
* J8 u; y, W: t9 j
0 I5 D) K/ _. Z- F+ K% u& u
|
zan
|