我目前使用Eigen庫將一些Matlab代碼轉換爲C++。 我一直在考慮的MATLAB代碼,它的如下:Matlab語法幫助'*
我有2點矩陣N_R
,G_R
。
N_R
是一個8行10欄矩陣而
G_R
是8值矢量
有具有術語N_R .' * G_R * N_R
在它的系統矩陣的對角矩陣。
我在這個術語中遇到了麻煩,一直沒能找到. ' *
這個組合。
我猜這是某種轉置和繁殖,但我不斷收到關於尺寸不匹配的錯誤。
我目前使用Eigen庫將一些Matlab代碼轉換爲C++。 我一直在考慮的MATLAB代碼,它的如下:Matlab語法幫助'*
我有2點矩陣N_R
,G_R
。
N_R
是一個8行10欄矩陣而
G_R
是8值矢量
有具有術語N_R .' * G_R * N_R
在它的系統矩陣的對角矩陣。
我在這個術語中遇到了麻煩,一直沒能找到. ' *
這個組合。
我猜這是某種轉置和繁殖,但我不斷收到關於尺寸不匹配的錯誤。
matlab中的'
運算符正在執行矩陣共軛,而.'
執行簡單的換位,如在Using transpose versus ctranspose in MATLAB中所解釋的。請注意,. '
無效,但是.'
是。
N_R.' * G_R * N_R
將與Eigen (Tutorial Matrix Arithmetic)是
N_R.transpose() * G_R * N_R
(感謝@開發金正日的指出我換了兩個含義的答案的原始版本)
至於你說的,.'
是轉置運算符(注意:它不包含空格)在MATLAB中,而*
是矩陣乘法。
現在,讓我們來回顧剩下的(我冒昧地把括號清晰度):
(N_R.') * (G_R) * (N_R)
N_R
是8x10的,所以N_R
牛逼是10×8。(N_R.') * (G_R)
是10x8 * 8x8,所以10x8。(N_R.') * (G_R) * N_R
因此是10x8 * 8x10,所以10x10。
'N_R。 '* G_R * N_R'是無效的MATLAB語法。我幾乎爲你的困惑感到難過。 –
@AndrasDeak。那麼,唯一的問題是它之間的空間。和',這可能是一個編輯問題。 –
@Johan我同意。但是我的思路是:「哦,基本的語法問題,由10k用戶回答,* bah *。」 - >「哦,那是*如何編寫MATLAB代碼?惡魔般的,誰會做這樣的事情?可憐的OP。」 - >「Waaaait一分鐘,這甚至不是有效的MATLAB語法,那麼爲什麼有人要求語法,甚至不使用它們所詢問的語法?」。 (我承認我的脾氣可能受到SO Docs複雜化的影響) –