Matlab编程常见错误与解决办法

上传人:平*** 文档编号:11928680 上传时间:2017-10-15 格式:DOC 页数:2 大小:37.58KB
返回 下载 相关 举报
Matlab编程常见错误与解决办法_第1页
第1页 / 共2页
Matlab编程常见错误与解决办法_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《Matlab编程常见错误与解决办法》由会员分享,可在线阅读,更多相关《Matlab编程常见错误与解决办法(2页珍藏版)》请在金锄头文库上搜索。

1、Matlab 常见错误及解决办法归纳1.Subscript indices must either be real positive integers or logicals 中文解释:下标索引必须是正整数类型或者逻辑类型 出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从 0 开始,要么出现了负数。注:matlab 的语法规定矩阵的索引从 1 开始,这与 C 等编程语言的习惯不一样。 解决办法:自己调试一下程序,把下标为 0 或者负数的地方修正。$ $ m8 A. T9 c$ i8 W 2.Undefined function or variable U 中文

2、解释:函数或变量 U 没有定义 .出错原因及解决办法:可能变量名输入错误,仔细检查3.Matrix dimensions must agree 中文解释:矩阵的维数必须一致 出错原因:这是由于运算符(= + - / * 等) 两边的运算对象维数不匹配造成的,典型的出错原因是错用了矩阵运算符。matlab 通过“.”来区分矩阵运算和元素运算。解决办法:自己调试一下程序,保证运算符两边的运算对象维数一致。 4.Function definitions are not permitted at the prompt or in scripts 中文解释:不能在命令窗口或者脚本文件中定义函数出错原因:

3、一旦在命令窗口写 function c = myPlus(a,b),此错误就会出现,因为函数只能定义在 m 文件中。关于脚本文件和 m 文件的区别请查阅 matlab 基础书。简言之:1) 如果你写成 function 的形式,那么必须写在 m 文件中,且以 function 开头(即 function 语句前不能包含其他语句,所有语句必须放在 function 中,当然,function 的定义可以有多个,各 function 之间是并列关系,不能嵌套);2) 如果你写成脚本的形式,则既可以写在命令窗口中,也可以写在 m 文件中,但两者均不能包含 function 语句(即不能进行函数的定义

4、) 解决办法:新建一个 m 文件,然后再进行函数的定义 5.One or more output arguments not assigned during call to . 中文解释:在调用.函数过程中,一个或多个输出变量没有被赋值 出错原因:函数如果带有输出变量,则每个输出在返回的时候都必须被赋值。容易出现这个错误的两个地方是:在部分条件判断语句(如 if )中没有考虑到输出变量的返回值。 在循环迭代过程中部分变量的维数发生了变化解决办法:调试程序,仔细查看函数返回时各输出变量的值。更好的方法是:在条件判断或者执行循环之前对所使用的变量赋初值。 6.? Index exceeds mat

5、rix dimensions中文解释:索引超出矩阵的范围 出错原因:在引用矩阵元素的时候,索引值超出矩阵应有的范围解决办法:检查所定义数组的维数,和引用的范围。 7.In an assignment A(I) = B, the number of elements in B and I must be the same 中文解释:在赋值语句 A(I) = B 中,B 和 I 的元素个数必须相同 出错原因:I 和 B 的维数、大小不一样。这正如“把 5 个水果放到 6 个篮子”、或者“把 6 个水果放到 5 个篮子” ,均无法实现 解决办法:自己设置断点调试一下,看看 I 和 B 的维数、大小是

6、否相同,不同的话就要修改成两者一致8 Subscripted assignment dimension mismatch中文解释:下标赋值尺寸不匹配出错原因:一般是等号两边格式不一样,如右边是数组左边是数字解决办法:看看等号左右两边的数据类型,尤其是经过运算后的数据类型一定要相同。9 Attempted to access (109,3); index must be a positive integer or logical.中文解释:索引必须是正整数或逻辑值出错原因:一般是由于浮点计算时间上的浮点误差造成的,比如 t/dt 不一定是正整数,会存在很小的误差。解决办法:可以采用 round(

7、a):四舍五入,比如:round(pi)=3;ceil(a): 向上取整,比如:ceil(pi)=4 ;floor(a):向下取整,比如:floor(pi)=310.设 A 为矩阵,用 size(A,i)求矩阵的行数和列数。其中 i=1 或 2.行数用 1,列数用 211. 从函数关系看,使用二次拟合为宜% 原始数据x=0.4,0.6,0.8,1.0,1.2,1.4;y=0.15,0.21,0.39,0.55,0.78,1.07;% 二次拟合p=polyfit(x,y,2)% 绘图比较plot(x,y,.-,x,polyval(p,x),r:o)12 line(.3 .7,.4 .9,1 1,Marker,*,LineStyle,-) line(.3 .7,.4 .9,1 1,Marker,.,LineStyle,-)13 A=1,2,3,4,5;2,3,4,6,2;2,3,2,3,4;for i=1:3A(i,:)=A(i,:)-mean(A(i,:)*onesend14

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号