Splitting array based on a single column's condition
    10 views (last 30 days)
  
       Show older comments
    
    yz
 on 19 Dec 2017
  
    
    
    
    
    Commented: Star Strider
      
      
 on 3 Jan 2018
            Hello, I am trying to separate my large array of [n rows, 5 columns] into individual arrays of [k rows, 5 columns] (where k < n). I want to split my array based on numbers on my fourth column. The fourth column has numbers that increase and decrease in a loop to create some peaks (example: goes from 0 to 35, then from 35 goes to 0, then from 0 to -35, etc.).
I've attached a sample code to help better explain what I mean.
Is there an efficient way to split these data? (So far I've been going into the data selecting where I want to split them up, and doing it manually.)
Thank you in advance.
Accepted Answer
  Ramnarayan Krishnamurthy
    
 on 28 Dec 2017
        
      Edited: Ramnarayan Krishnamurthy
    
 on 28 Dec 2017
  
      If the transition point in the fourth column is known to be 0, then you can consider splitting the data by the location of these 0's.
% Locate the zeros in the 4th column  
  index_0 = find(s_P1_5(:,4)==0);
% Include the start and end indices  
  idx = [0 index_0' size(s_P1_5,1)];
% Create individual cells containing the sub matrices
  out = mat2cell(s_P1_5, diff(idx))
The split arrays will now be stored in out{1}, out{2} and so on.
More Answers (0)
See Also
Categories
				Find more on Matrices and Arrays in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

