2016-01-22 53 views
-1

我需要計算異常檢測訓練集的均值和方差,但不斷收到維度不匹配誤差。平均值和方差維度不匹配

mean_train = 1/(num_train)* sum(Xtrain); 
var_train = 1/(num_train)* sum(Xtrain - mean_train).^2; 
+0

嘗試看變量的大小和調試 – dnit13

回答

0

首先顯示所有數據,因爲我們無法重現您的錯誤。 我建議,你拿這個錯誤是因爲這個: mean_trainnum_train是一個向量,然後我們不能簡單地乘以或減去它與Xtrain

但是,你的答案: 只是使用內置的Matlab函數meanvar。這使您可以使用它以這種方式:

mean(Xtrain) 

避免使用輔助變量,如num_train


我檢查你的代碼,發現錯誤: Xtrain是100X2陣列。並使用sum它返回1x2陣列!你可以幫助瞭解這一點:

如果A是一個矩陣,則總和(A)返回一個包含每個列的總和 行向量。

所以,你的下一個動作:

mean_train = 1/(num_train)* sum(Xtrain); 

回報1x2的陣列和MATLAB不能讓這樣的:Xtrain - mean_train

答案很簡單: 使用sum兩次這樣的:sum(sum(Xtrain))

+0

完整的代碼可以在這裏找到: http://cornelis.website/code/Anomaly.m 代碼測試可以在這裏找到: http://cornelis.website/code/test.m –

+0

@JeandeToit我檢查了你的代碼,發現錯誤。看看我編輯的答案! –