- 在线时间
- 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常见语法错误
. r9 F0 s1 r' JSubscript indices must either be real positive integers or logicals 6 H6 a1 Z! @& H
中文解释:下标索引必须是正整数类型或者逻辑类型
4 T$ g' F$ ]$ y _" G( @
# ]( w: `0 S5 D' `# {: A出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从 0 开始,要么出现了负数。注:matlab的语法规定矩阵的索引从 1 开始,这与 C 等编程语言的习惯不一样。
! |* E7 Q2 u5 C5 a0 b _' g6 H" s( L4 R$ R
解决办法:自己调试一下程序,把下标为 0 或者负数的地方修正。关于矩阵的各种访问方式。 # S4 l+ s; y8 a. W5 G0 v
; k# o5 F! H7 I4 |9 `
举例:, i) _$ A' ~- `( _: J( K* G. X; X v
【错误代码】:
1 V" _2 Y2 |: C& C* J. [1. for s = 0:0.2:2
$ m Z$ |) _9 D [% f' c- S2. a(s) = 4 * s - 1; " s, M4 Y5 d" h2 Z, X7 N ^6 r& j
3. end * c2 V1 [1 H+ e
【正确代码】:
3 n* B: ?& y: Q: S* g8 y$ j1. 5 l. Q- ]5 `% @& d/ W9 p3 x8 N
2. for s = 1:10
, {6 |4 V' Z% g6 C( a# e3. a(s) = 4 * s - 1;
, d7 h, N( @& W6 K当然,这样的赋值使用循环是低效的,因此不提倡0 e( j; f3 N- t
Undefined function or variable "a"
% b, O7 M9 y5 Q$ R: M中文解释:函数或变量 a 没有定义
8 T0 L8 S1 p& ?9 S
" E5 V9 G3 w! s; p w出错原因及解决办法:
1 ?' z; s0 l8 a9 g) \7 H) O9 c
1. 如果 a 是变量,则参见 [原创]写给学习 matlab 的新手们 一贴中技巧 6 后半部分1 Y1 v3 ^- t/ \) O$ m7 _7 I- [
2. 如果 a 是函数,则这是因为matlab在所有已添加的路径中都无法找到该函数对应的m文件而导致的,对此,把该m文件移动到当前路径下再运行便可。(注:何谓“所有已添加的路径”——在命令窗口中输入 pathtool 可以查看;何谓“当前路径”——在命令窗口中输入 pwd 可以查看); ]' O% j _$ g9 J o
`2 _% O# i2 Y: q举例:
8 k( Y+ Z! P7 e& s7 hmyPlus.m:
! P! b3 [' d: V" l! G2 Q1. function d = myPlus(a,b)
+ d6 Q& o4 n, B" N% m x. E2. d = a + b; - e6 C1 {* D( _4 @ [# Q- D
【错误调用】: % n# S) `: O! ]
命令窗口: 8 w. e) k8 t" p* k
1. >> z = myPlus(a,b)
* N# e- X" p; N4 q【正确调用】:
* n4 {7 h/ I) D& v! t命令窗口: / ~- K% G, z/ c3 y9 Y
1. >> x = 2;
( Q+ l$ l1 m; a4 Q6 r2. >> y = 5; 9 A3 a4 e) P4 u
- i$ V: e- e, D3 _) s
5 B: P* ~4 |. j
- l# }& W6 S$ b+ Z* m
8 r3 w) P& M/ ?3 u( d, M3 Q |
zan
|