2016-01-09 65 views
1

我有一個特定的矩陣X。其軌跡等於n,即trace(X) = n標準化矩陣以具有特定的跟蹤值

New_X = normc(X) 

X行至1:1的長度的簡單歸一化可以容易地在完成:的X列的爲1的長度 一個簡單的歸一化可以在MATLAB使用函數normc容易地進行matlab的使用功能normr

New_X = normr(X) 

我感興趣做的是規範的矩陣X具有等於d沒有痕跡n。我怎樣才能做到這一點?任何幫助將非常感謝!

+3

不會'd * X/trace(X)'給你想要的矩陣嗎?痕跡和長度是不同的東西,痕跡是總和,而長度是平方和的平方根。如果你想把對角線的長度設爲1,那麼可能會做更多的工作。 –

+2

如果你想把對角線的歐式長度設爲1,你可以做'sqrt(d)* X/norm(diag(X))'並且結果矩陣將有一個長度爲d的對角線。 –

+1

@randomGuy我認爲你應該添加這些答案。這個解決方案要麼是你說的,要麼是問題不明確(我的意思是說,如果行/列允許獨立縮放,那麼這個問題是非常強烈的欠定的)。 –

回答

3

trace和長度是不同的東西,痕跡是總和而長度是歐幾里德長度定義爲平方和的平方根。如果您正在尋找變換分析矩陣使得痕跡d你可以縮放矩陣:

Xtfm = d*X/trace(X) 

如果您正在尋找正常化使得對角線的歐幾里德長度爲1,你可以使用下面的:

Xtfm = d*X/norm(diag(X))