www.gusucode.com > classification_matlab_toolbox分类方法工具箱源码程序 > code/Classification_toolbox/Parzen.m
function D = parzen(train_features, train_targets, hn, region) % Classify using the Parzen windows algorithm % Inputs: % features - Train features % targets - Train targets % hn - Normalizing factor for h % region - Decision region vector: [-x x -y y number_of_points] % % Outputs % D - Decision sufrace N = region(5); %Number of points on the grid x = ones(N,1) * linspace (region(1),region(2),N); y = linspace (region(3),region(4),N)' * ones(1,N); Uc = unique(train_targets); V = zeros(length(Uc), N, N); x_i = train_features; for j = 1:length(Uc), indices = find(train_targets == Uc(j)); P(j) = length(indices)/size(x_i,2); n = length(indices); for i = 1:n, temp = (x - x_i(1,indices(i))).^2 + (y - train_features(2,indices(i))).^2; V(j,:,:) = squeeze(V(j,:,:)) + phi(temp./hn); if (i/50 == floor(i/50)), disp(['Finished ' num2str(i) ' iterations out of ' num2str(n) ' iterations.']) end end V(j,:,:) = V(j,:,:) / sum(sum(squeeze(V(j,:,:)))); end D = (squeeze(V(1,:,:))*P(1) < squeeze(V(2,:,:))*P(2)); %END Parzen function p = phi(val) %The window function for the Parzen window p = (abs(val) <= 0.5);