function [ X,header ] = pnFeatures(data,featType) %PNFEATURES Extract features for a given model % [ X,header ] = pnFeatures(data,featType) extracts features for the data % given the type of features requested. These features are in double % matrix form and can be used in model development algorithms. % % Inputs: % data - Cell array of data. % Column 1 - Subject IDs % Column 2 - Time stamp vectors for each subject % Column 3 - Feature name vectors for each subject % Column 4 - Data value vectors for each subject % % featType - The type of features to extract % % Outputs: % X - Double matrix NxD with D features needed for training. % header - Cell array 1xD of labels for each feature used. % % % Example % bpath = './set-a/'; % data = pnLoadTextFilesCell(bpath); % stat = pnFeatures(data(1,:)) % % See also PNGENERATEFEATURES % References: % Physionet Challenge 2012 % Copyright 2012 Alistair Johnson % $LastChangedBy: alistair $ % $LastChangedDate: 2012-08-23 18:39:12 -0400 (Thu, 23 Aug 2012) $ % $Revision: 152 $ % Originally written on GLNXA64 by Alistair Johnson, 21-Jun-2012 13:00:48 % Contact: alistairewj@gmail.com if nargin<2 featType = 'Base'; end %=== Get the type of features to be extracted/default to base as needed switch featType case {'Complexity'} featfcn = @pnComplexityFeatures; case {'Plus'} featfcn = @pnPlusFeatures; case {'Base'} featfcn = @pnBaseFeatures; case {'Andrew'} featfcn = @pnAndrewFeatures; case {'LouisOld'} featfcn = @pnLouisOldFeatures; case {'Louis'} featfcn = @pnLouisFeatures; case {'GSO21','ReliefF1','CFS1','CBF1','jmi1','mrmr1','disr1','all1'} k = 1; featfcn = @(x) pnThanasisFeatures(x,featType,k); case {'GSO22','ReliefF2','CFS2','CBF2','jmi2','mrmr2','disr2','all2'} k = 2; featfcn = @(x) pnThanasisFeatures(x,featType,k); case {'GSO23','ReliefF3','CFS3','CBF3','jmi3','mrmr3','disr3','all3'} k = 3; featfcn = @(x) pnThanasisFeatures(x,featType,k); %=== default is using fold 4 of thanasis' feature selection case {'GSO2','ReliefF','CFS','CBF','jmi','mrmr','disr','all',... 'GSO24','ReliefF4','CFS4','CBF4','jmi4','mrmr4','disr4','all4'} k = 4; featfcn = @(x) pnThanasisFeatures(x,featType,k); otherwise fprintf('Feature function not found! Using BASE features.'); featfcn = @pnBaseFeatures; end [X,header] = featfcn(data); end