www.gusucode.com > classification_matlab_toolbox分类方法工具箱源码程序 > code/Classification_toolbox/FishersLinearDiscriminant.m

    function [features, train_targets, w] = FishersLinearDiscriminant(train_features, train_targets, param, region)

%Reshape the data points using the Fisher's linear discriminant
%Inputs:
%	train_features	- Input features
%	train_targets	- Input targets
%	param			- Unused
%	region			- Unused
%
%Outputs
%	features			- New features
%	targets			- New targets
%  w					- Weights vector

train_one  = find(train_targets == 1);
train_zero = find(train_targets == 0);

s0			  = cov(train_features(:,train_zero)',1);
m0			  = mean(train_features(:,train_zero)');
s1			  = cov(train_features(:,train_one)',1);
m1			  = mean(train_features(:,train_one)');

sw			  = s0 + s1;
w			  = inv(sw)*(m0-m1)';
features   = [w'*train_features; zeros(1,length(train_targets))]; %We add a dimension because the toolbox needs 2D data