2014-10-02 90 views
-2

我試圖在matlab中實現高斯基函數,但我看不到我如何得到它不返回一個向量。我的數據是10,000(樣本)x 21(特徵)。我一直在做研究,我看到了使用統計工具箱的建議,但我只想使用matlab代碼。以下是我正在使用的高斯基函數。高斯基函數返回矢量不是標量

下面是我使用的MATLAB代碼。

function [ scalar_value ] = gaussian_basis(x_vector, mu_vector) 
    % x_vector 1 x 21 vector 
    % mu_vector 1 x 21 vector 

    scalar_value = exp(-((x_vector - mu_vector).^2/ 2 * .5^2)); 

我不知道我在想什麼。正如我所提到的,我看不出如何使這個返回值成爲一個標量值。任何幫助或方向,不勝感激。

+0

也許我現在缺乏理論,但是如果你給出向量,它應該如何返回一個標量呢?操作'(x_vector - mu_vector)'是組件式的,所以你會得到21個標量值。 – 2014-10-02 23:45:19

+0

是的,這是我有問題的地方。從我看到的資源來看,「每個基函數φj(x),j = 0,... M-1將輸入向量x轉換爲標量值。」謝謝。 – user2743 2014-10-02 23:49:43

+0

對於任何給定的x **值**你會得到一個標量。對於一組值,即如果x是一個向量,你會得到一個向量... – bla 2014-10-03 00:49:44

回答

0

我認爲你缺少的是高斯函數的基礎上通常

enter image description here

,而不是在

enter image description here

定義。如果這是正確的解釋,然後你想要:

scalar_value = exp(-sum((x_vector - mu_vector).^2, 2)/ (2 * .5^2)); 

代替

scalar_value = exp(-((x_vector - mu_vector).^2/ 2 * .5^2)); 

後者,正如在評論中指出的那樣,總是會返回一個向量,因爲你不包括任何操作的是聚集在第二維度。