%% Initiate materials tested and polarizer mode (paramater vectors previously saved in paths) mode = 0; % 0/1 total accuracy/param strength N_Runs=100; % To find average predictive accuracy polarization = 'NoPol'; % Polarizer mode % paths - where the "parameter vectors" for each data set are stored path = [['T:\GA Matlab Codes\Material Recongnition\data\He-Ne\NoLensNoTube_',polarization],['\Adj Cam Settings\']]; path1 = [path,'Paint_D\31-Aug-2017']; path2 = [path,'Paint_E\31-Aug-2017']; path3 = [path,'Shiny_Plastic\06-Sep-2017']; path4 = [path,'Brown_Cardboard\04-Sep-2017']; path5 = [path,'Wood_D\03-Sep-2017']; path6 = [path,'Wood_B\03-Sep-2017']; Params = '\Parmas_G_I_log_W800_2.mat'; load([path1,Params]); D1 = [ones(size(D,1),1) D(:,1:end)]; load([path2,Params]); D2 = [2*ones(size(D,1),1) D(:,1:end)]; load([path3,Params]); D3 = [3*ones(size(D,1),1) D(:,1:end)]; load([path4,Params]); D4 = [4*ones(size(D,1),1) D(:,1:end)]; load([path5,Params]); D5 = [5*ones(size(D,1),1) D(:,1:end)]; load([path6,Params]); D6 = [6*ones(size(D,1),1) D(:,1:end)]; % Comparsion will take place between the materials in D D = [D1(:,1:end-1);D2(:,1:end-1);D4(:,1:end-1);D5(:,1:end-1);D6(:,1:end-1)]; varlist = {'x1','x2','x3','x4','x5','x6','x7','x8','x9','x10','x11','x0'}; clear(varlist{:},'varlist') Mistakes = [0 0]; %% Use parameter vectors to cluster the diff. materials and test the algorithm if (mode) N_Runs = size(D,2)-1; end for t=1:N_Runs rperm = randperm(size(D,1)); ind_train = rperm(1:round(2*end/3)); % Can play with ratio for best results ind_test = rperm(round(2*end/3)+1:end); if(mode) X_train = D(ind_train,t+1); % To check param strength X_test = D(ind_test,t+1); else X_train = D(ind_train,2:end); % To check total accuracy X_test = D(ind_test,2:end); end Y_train = D(ind_train,1); Y_test = D(ind_test,1); MdlLinear = fitcdiscr(X_train,Y_train); % LDA fit [Y_pred,Pred_scores] = MdlLinear.predict(X_test); % Predicting test set Acc(t) = mean(Y_pred==Y_test); % pred. acc. per testing set index = find((Y_pred ~= Y_test)); % Find errors temp = [Y_pred(index),Y_test(index)]; % shows the mistaken pairs Mistakes = [Mistakes;temp]; end %% Print results if(mode) Acc else MeanAcc = mean(Acc) end % index = find((Y_pred ~= Y_test)); Mistakes = [Y_pred(index),Y_test(index)]; figure(888); histogram(Mistakes(:,1)+Mistakes(:,2)) % Show most common mistakes