QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2319|回复: 0
打印 上一主题 下一主题

mablab常见错误以及具体改正方法~

[复制链接]
字体大小: 正常 放大

398

主题

13

听众

1342

积分

  • TA的每日心情
    慵懒
    2015-12-12 14:33
  • 签到天数: 81 天

    [LV.6]常住居民II

    跳转到指定楼层
    1#
    发表于 2015-11-4 00:05 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    具体方法:
    1.多动手写程序、调试
    这里有些常见错误提示信息供大家参考
    1.Subscript indices must either be real positive integers orlogicals
    中文解释:下标索引必须是正整数类型或者逻辑类型
    出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从 0 开始,要么出现了负数。注:matlab的语法规定矩阵的索引从 1 开始,这与 C 等编程语言的习惯不一样。
    解决办法:自己调试一下程序,把下标为 0 或者负数的地方修正。
    2.Undefined function or variable "a"
    中文解释:函数或变量 a 没有定义
    3.Input argument "x" is undefined
    中文解释:输入变量 x 没有定义
    4.Matrix dimensions must agree
    Inner matrix dimensions must agree
    中文解释:矩阵的维数必须一致
    出错原因:这是由于运算符(= + - / * 等)两边的运算对象维数不匹配造成的,典型的出错原因是错用了矩阵运算符。matlab通过“.”来区分矩阵运算和元素运算
    5.Function definitions are not permitted at the prompt or inscripts
    中文解释:不能在命令窗口或者脚本文件中定义函数
    出错原因:一旦在命令窗口写 function c = myPlus(a,b),此错误就会出现,因为函数只能定义在 m 文件中
    6. 1) X must have one or two columns
       2)Vectors must be the samelengths
    中文解释:
    1. X 必须是 1 或者 2 列
    2. 向量长度必须一致
    7.One or more output arguments not assigned during call to'...'
    中文解释:在调用...函数过程中,一个或多个输出变量没有被赋值
    8.??? Error using ==> mpower
    Matrix must be square
    中文解释:错误使用mpwoer函数,要求矩阵必须是方阵
    9.Explicit integral could not be found.
    中文解释:显式解没有找到
    10.Index exceeds matrix dimensions.
    Attempted to access b(3,2); index out of bounds becausesize(b)=.
    中文解释:索引超出矩阵的范围
    11.In an assignment   A(I) =B, the number of elements in B and I must be the same
    中文解释:在赋值语句 A(I) = B 中,B 和 I 的元素个数必须相同
    12.To RESHAPE the number of elements must not change
    中文解释:矩阵变换时,变换前和变换后的总元素不能改变
    2.善于利用MATLAB的帮助
    一遇到什么问题,通常我的第一反应是:help,就先说说自己对help的一些常用方法吧。
    1)命令窗口直接敲“help”,你就可以得到本地机器上matlab的基本的帮助信息。
    2)对于某些不是很明确的命令,只知道大体所属范围,譬如说某个工具箱,直接在命令窗口中敲入
    Help toolboxname,一帮可以得到本工具箱有关的信息:版本号,函数名等。
    3)知道函数名,直接用help funname就可以得到相应的帮助信息。
    3.善于向别人学习,多看牛人写的代码并消化
    三人行,必有我师,一个人很难什么都精通,取长补短是最快的进步方法。Matlab的File exchange和pudn上都用很多代码,多看看牛人写的代码,了解他们编程技巧和思想,并消化,对于提高自己的编程水平非常有利。
    4.时间积累
    “冰冻三尺非一日之寒”,学习需要日积月累,多积累一些matlab的技巧,对于编程是很有利的,比如求序列中的极值,下面一些正是小代码体现大智慧的典范!
    利用数学里驻点和极值点定义来求。
    --------------------------------------ilxy的方法-------------------------------------------------------------------
    >> aa=randperm(20)  
    aa =  
    16 13 17 7 19 18 14 8 11 2 20 3 6 4 15 1 12 10 5 9  
    >> bb=intersect(find(diff(aa)>0)+1,find(diff(aa)<0))  
    bb =  
        3 5 9 11 13 15 17  
    ----------------------------------------------------------------------------------------------------------------------
    ----------------------------------hyperelastic 的方法----------------------------------------------------------  
    N = 100;  
    aa=randperm(N);  
    index = find(((aa(2:N-1)>aa(1:N-2))+(aa(2:N-1)>aa(3:N)))==2)+1;  
    bb = aa(index);  
    -------------------bainhome  的方法-----------------------------------------------------------------------------
    a=rand(1,100);   find(diff(sign(diff(a)))>0)+1
    ------------------------------------------------------------------------------------------------------------------------
    以上代码都是求极大值,略微变换后可以得到极小值。出自:中华钢结构论坛
    ------------------------------------eight版主给的方法------------------------------------------------------------
    d=diff(x);
    n=length(d);
    d1=d(1:n-1);
    d2=d(2:n);
    indmin=find(d1.*d2<0 & d1<0)+1;
    indmax=find(d1.*d2<0 & d1>0)+1;
    ------------------------------------------------------------------------------------------------------------------------
    虽然基本原理一样,不过方法都各有特色。都是前辈们智慧的结晶。

    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-7-16 09:18 , Processed in 0.718518 second(s), 49 queries .

    回顶部