working with ext supplied cost functions
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Sat, 1 Jul 2017 04:42:24 +0000 (04:42 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Sat, 1 Jul 2017 04:42:24 +0000 (04:42 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@3272 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/octave/kmeans2.m

index 2e08f6ff5b021c4a6622f3bf178c3fbd45a8fdd5..37b2080f2b1df58a755db5e6fed28d254445c9cd 100644 (file)
@@ -71,8 +71,9 @@ function [classes, centers, sumd, D] = kmeans2 (data, k, varargin)
 
     ## check for the â€˜search_func’ property, user defined vq_search function
 
-    if find (strcmpi (prop, "search_func") == 1)
-      search_func = (prop{found+1});
+    found = find (strcmpi (prop, "search_func") == 1);
+    if found
+      search_func = prop{found+1};
     end
   endif
 
@@ -89,7 +90,7 @@ function [classes, centers, sumd, D] = kmeans2 (data, k, varargin)
   ## Run the algorithm
 
   while err > .001
-    classes = search_func(centers, data);
+    classes = feval(search_func, centers, data);
 
     ## Calculate new centroids
 
@@ -135,12 +136,11 @@ function [classes, centers, sumd, D] = kmeans2 (data, k, varargin)
 endfunction
 
 
-function [idx errors g test_] = vq_search_mse(vq, data)
+function idx = vq_search_mse(vq, data)
     [nVec nCols] = size(vq);
     nRows = length(data);
 
     error = zeros(1,nVec);
-    errors = zeros(1, nRows);
     idx = zeros(1, nRows);
 
     for f=1:nRows
@@ -150,9 +150,8 @@ function [idx errors g test_] = vq_search_mse(vq, data)
         error(i) = diff * diff';
       end
       [mn min_ind] = min(error);
-      errors(f) = mn; idx(f) = min_ind;
-      test_(f,:) = vq(min_ind,:);
-    end
+      idx(f) = min_ind;
+     end
 endfunction