??? error using ==> times matlab,matlab错误 Error using 怎么办?

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

yyrhpl3232

2018.02.02

02ae427d08e371d7e90d5b995e828d6d.png

采纳率:48%    等级:8

已帮助:1709人

楼上的回答正确,但没有解释出错的原因,对于初学者而言,虽然解决了眼下的问题,但以后仍然可能犯类似的错。

首先,楼主可能会感到困惑的是,自己的表达式中并没有mpower这个符号,为什么会报

Error using ==> mpower

这样的错误?其实,用

help mpower

查阅该函数的参考信息,可以知道mpower是矩阵幂函数(Matrix power),对应的符号就是“^”,而这个符号在楼主的表达式中。

这里,要顺便做一点背景性的介绍:MATLAB中的运算符其实都有对应的函数,例如,“^”对应mpower,“*”对应mtimes,“/”对应mrdivide,等等。可以用

help ops

查看关于运算符更详细的列表。

上面说到的几个运算符对应的函数都以m开头,含义是,这几个运算符所做的都是矩阵运算,即按照矩阵运算规则进行运算。和矩阵运算相对的,还有一类运算,叫做数组运算,也就是通常所说的“点运算”,其规则是按照逐个元素对应进行运算,例如“.*”就是两个相同维数的数组相应位置的元素相乘得到结果。点运算主要包括以下几个:

.* 数组乘,对应函数为times;

./ 数组右除,对应函数为rdivide;

.\ 数组左除,对应函数为ldivide;

.^ 数组幂,对应函数为power;

.' 转置,对应函数为transpose(如果不加点,即“'”,表示共轭转置)

有了上面这些背景知识,楼主应该知道为什么会出错以及怎样修改了。表达式里面的T是数组,而楼主的计算显然是希望对每个元素进行的(element-wise),所以部分运算符应该改成点运算。涉及到的运算符包括三个“^”,一个“*”和一个“/”,改过来就好了:

F=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);

最后,不知道楼主会不会有这样的疑问:表达式中,“/”出现在“^”之前,为什么不报右除号的错误,而是报了幂运算的错误呢?这是因为,表达式的除号右边是一个括号,要进行除运算,首先要把括号里的值算出来,而计算括号里面的值首先会遇到的就是“^”。

00分享举报

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值