matlab错误 Error using 怎么办?
1个回答
2022-12-11 · 百度认证:北京惠企网络技术有限公司官方账号
关注
展开全部
楼上的回答正确,但没有解释出错的原因,对于初学者而言,虽然解决了眼下的问题,但以后仍然可能犯类似的错。\x0d\x0a \x0d\x0a首先,楼主可能会感到困惑的是,自己的表达式中并没有mpower这个符号,为什么会报\x0d\x0a Error using ==> mpower\x0d\x0a这样的错误?其实,用\x0d\x0a help mpower\x0d\x0a查阅该函数的参考信息,可以知道mpower是矩阵幂函数(Matrix power),对应的符号就是“^”,而这个符号在楼主的表达式中。\x0d\x0a\x0d\x0a这里,要顺便做一点背景性的介绍:MATLAB中的运算符其实都有对应的函数,例如,“^”对应mpower,“*”对应mtimes,“/”对应mrdivide,等等。可以用\x0d\x0a help ops\x0d\x0a查看关于运算符更详细的列表。\x0d\x0a \x0d\x0a上面说到的几个运算符对应的函数都以m开头,含义是,这几个运算符所做的都是矩阵运算,即按照矩阵运算规则进行运算。和矩阵运算相对的,还有一类运算,叫做数组运算,也就是通常所说的“点运算”,其规则是按照逐个元素对应进行运算,例如“.*”就是两个相同维数的数组相应位置的元素相乘得到结果。点运算主要包括以下几个:\x0d\x0a .* 数组乘,对应函数为times;\x0d\x0a ./ 数组右除,对应函数为rdivide;\x0d\x0a .\ 数组左除,对应函数为ldivide;\x0d\x0a .^ 数组幂,对应函数为power;\x0d\x0a . 转置,对应函数为transpose(如果不加点,即“'”,表示共轭转置)\x0d\x0a \x0d\x0a有了上面这些背景知识,楼主应该知道为什么会出错以及怎样修改了。表达式里面的T是数组,而楼主的计算显然是希望对每个元素进行的(element-wise),所以部分运算符应该改成点运算。涉及到的运算符包括三个“^”,一个“*”和一个“/”,改过来就好了:\x0d\x0aF=1./(1-(1-(0.05-3*1.2*10^(-5)*(1-0.05)*(T-20))).^0.8+(1-0.005-3*1.2*10^(-5)*(1-0.005)*(T-20)).^0.4.*(0.045226-3*1.2*10^(-5)*(1-0.045226)*(T-20)).^2);\x0d\x0a \x0d\x0a最后,不知道楼主会不会有这样的疑问:表达式中,“/”出现在“^”之前,为什么不报右除号的错误,而是报了幂运算的错误呢?这是因为,表达式的除号右边是一个括号,要进行除运算,首先要把括号里的值算出来,而计算括号里面的值首先会遇到的就是“^”。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询