matlab错误 Error using ==> mpower Inputs must be a scalar and a square matrix我在用matlab做出F与T的关系图像,程序如下:T=20:5:100; 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.04

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 13:40:13
matlab错误 Error using ==> mpower Inputs must be a scalar and a square matrix我在用matlab做出F与T的关系图像,程序如下:T=20:5:100; 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.04
xV[OG+@PU)$JFԾX!9"qqmhncH`csqK@a}/̬/*/xg9swsN{Ol6 @`1,g~P(gy)/'>ūyw)Ӳ7S(0 mbV_E\uޠ6 eT 3yܚܟ?|<;6$ò_5$fJH̴[vV^2}bCI18KUݦ 1iԉyH39'V-g c)z^egtX*j4XIcg[tV/cM AkRFk4M+vUW|  9'U$.9'ΛIe4\Ha5HqټSyM1U֐8bwiNYhh[8j2vYg>+ow v)%-}DX%̼{\S *J)85MD,q W*&T|nCŞd`0.p75SVB[Í,i։q-MN{%)jN(,y1#$] +3[z^G\٦ NGpgpLStNXc;|h\"]>P䤄z\V3ŊɌLO@R:#Mߜo޷4lgWID4zO#R٤}Ԉ^89DO]sWE].;[fK$$ SCo tbIuR Y}pjAwA|

matlab错误 Error using ==> mpower Inputs must be a scalar and a square matrix我在用matlab做出F与T的关系图像,程序如下:T=20:5:100; 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.04
matlab错误 Error using ==> mpower Inputs must be a scalar and a square matrix
我在用matlab做出F与T的关系图像,程序如下:
T=20:5:100;
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);
然后出现错误
Error using ==> mpower
Inputs must be a scalar and a square matrix
不知道怎么回事,F的表达式中只有一个变量T,只是公式比较长而已,求大侠指点.

matlab错误 Error using ==> mpower Inputs must be a scalar and a square matrix我在用matlab做出F与T的关系图像,程序如下:T=20:5:100; 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.04
楼上的回答正确,但没有解释出错的原因,对于初学者而言,虽然解决了眼下的问题,但以后仍然可能犯类似的错.
首先,楼主可能会感到困惑的是,自己的表达式中并没有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);
最后,不知道楼主会不会有这样的疑问:表达式中,“/”出现在“^”之前,为什么不报右除号的错误,而是报了幂运算的错误呢?这是因为,表达式的除号右边是一个括号,要进行除运算,首先要把括号里的值算出来,而计算括号里面的值首先会遇到的就是“^”.