Skip to content

Instantly share code, notes, and snippets.

@kmader
Last active August 29, 2015 13:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kmader/9934345 to your computer and use it in GitHub Desktop.
Save kmader/9934345 to your computer and use it in GitHub Desktop.
Read In Text File, Plot, and Run K-Means on Volume Column
simplelay=importdata('simple_layer.csv',',',1);
disp(simplelay.colheaders)
%% parse the data in matlab
% A tiny piece of code to find which column the given header is in
findColumn=@(idstrut,colName) find(not(cellfun('isempty',strfind(idstrut.colheaders,['"' colName '"']))));
% a function to return all of the data in that column
getColumn=@(idstrut,colName) idstrut.data(:,findColumn(idstrut,colName));
%% show the data
figure(1)
subplot(1,2,1);
plot(getColumn(simplelay,'x'),getColumn(simplelay,'y'),'r.')
title('Point Location')
subplot(1,2,2);
hist(getColumn(simplelay,'Volume'))
pause(0.5)
%% make two groups based on volume
% kmeans can do strange things sometimes so the solution below is safer
% groupId=kmeans(getColumn(simplelay,'Volume')',2,'EmptyAction','singleton')
% if it has a volume greater than 1050 make the group 2 otherwise make it group 1
groupId=(getColumn(simplelay,'Volume')'>1050) + 1;
% show the groups as different colors
xdata=getColumn(simplelay,'x');
ydata=getColumn(simplelay,'y');
figure(2)
plot(xdata(groupId==1),ydata(groupId==1),'r.')
hold on;
plot(xdata(groupId==2),ydata(groupId==2),'bo')
legend({'Group 1','Group 2'});
hold off;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment