我需要預先計算在MATLAB中使用LIBSVM的直方圖相交核矩陣。如何在MATLAB中矢量化相交核函數?
假設x,y是兩個向量。核函數是K(x,y)= sum(min(x,y))。爲了高效,大多數情況下的最佳做法是對操作進行矢量化。
我想要做的就像計算像計算兩個矩陣之間的歐氏距離的核矩陣,如pdist2(A,B,'euclidean')。定義函數'intKernel'後,我可以通過調用pdist2(A,B,intKernel)來計算交集內核。
我知道函數'pdist2'可能是一個選項。但我不知道如何編寫自定義距離函數。雖然,我不知道如何在一個濃縮表達式中編碼向量(1-by-M)和矩陣(M-by-N)之間的交集核心。
'repmat'可能不可行,因爲矩陣非常大,讓我們說,20000乘360000。
任何幫助,將不勝感激。
問候, 彭珮雲
我之前嘗試過這種表達方式,但它會導致下標賦值尺寸不匹配的錯誤。例如,a = rand(1,10); b = rand(10,10); (b,x,Y),1)); – Peiyun
我想通了。 distance_kernel應該是: distance_kernel = @(x,Y)sum(bsxfun(@min,x,Y),2),它將對列進行求和。 – Peiyun
@Peiyun是的,你是對的,我編輯我的答案。 – Bentoy13