天天看點

??? error using ==> times matlab,matlab錯誤 Error using 怎麼辦?

滿意答案

??? error using ==> times matlab,matlab錯誤 Error using 怎麼辦?

yyrhpl3232

2018.02.02

??? error using ==> times matlab,matlab錯誤 Error using 怎麼辦?

采納率: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分享舉報