to select consecutive more than one column in matlab having difference
    3 views (last 30 days)
  
       Show older comments
    
Hello everyboby, I have a matrix named eta=54×1800.for selecting specific rows and columns typically we used e.g result=eta(:, 86:90:1800); But here I need to select consecutive 5 columns 86,87,88,89,90 each having difference 90, e.g after 86,87,88,89,90 I want to get 176,177,178,179,180.I try like result=eta(:,[86:90:1800,87:90:1800,88:90:1800,89:90:1800,90:90:1800]); but it does not give the result of consecutive columns.
0 Comments
Accepted Answer
  Stephen23
      
      
 on 26 Feb 2017
        
      Edited: Stephen23
      
      
 on 26 Feb 2017
  
      Sort the indices to get consecutive columns adjacent to each other:
 idx = sort([86:90:1800,87:90:1800,88:90:1800,89:90:1800,90:90:1800])
 eta(:,idx)
Or without having to write that long list:
 >> vec = 86:90;
 >> C = arrayfun(@(b)b:90:1800, vec, 'Uni',0);
 >> idx = sort([C{:}])
or generate them in the correct order in the first place:
>> vec = 86:90;
>> idx = bsxfun(@plus,vec(:),0:90:1800-90);
>> idx = idx(:).'
0 Comments
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
