??? error using == times matlab,matlab错误 Error using 怎么办?
滿意答案
yyrhpl3232
2018.02.02
采納率: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分享舉報
總結
以上是生活随笔為你收集整理的??? error using == times matlab,matlab错误 Error using 怎么办?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联通宽带一个月多少钱啊?
- 下一篇: 求一个火锅烧烤店好听的名字!