www.gusucode.com > emg_functions > emg_functions/classify_online/getClassMeans2.m
%% Betthauser - 2016 -- Determine class means % INPUTS: Atrain - training data (numF x N) % trainlabels - training data labels (1 x N) % normalize - scale to 0-1 range % % OUTPUT: [trainMeans, trainMeansPDF] - class means, class means as scaled PDF function [trainMeans, trainMeansPDF, trainMax] = getClassMeans(Atrain, trainlabels) numClasses = length(unique(trainlabels)); sizeTrain = size(Atrain,2); numFeatures = size(Atrain,1); %% Get indeces where class breaks occur in y (known classes) [breakIndeces] = getBreakIndeces(Atrain, trainlabels); % if normalize trainMax = max(Atrain,[],2); Atrain = bsxfun(@rdivide, Atrain, trainMax); % end trainMeans = zeros(numFeatures,numClasses); trainMeansPDF = zeros(numFeatures,numClasses); for i = 1:sizeTrain for j = 1:numClasses % get appropriate section of A matrix if j == 1 data = Atrain(:,1:breakIndeces(j)); elseif j == numClasses data = Atrain(:,(breakIndeces(j-1)+1):sizeTrain); else data = Atrain(:,breakIndeces(j-1)+1:breakIndeces(j)); end trainMeans(:,j) = mean(data,2); trainMeansPDF(:,j) = trainMeans(:,j) / sum(trainMeans(:,j)); end end end