How can I extract column vectors from matrix (with large number of columns) ?
    33 views (last 30 days)
  
       Show older comments
    
Having a lot of columns, this way of extracting from a big matrix named C :
temperature = C(:,1);
index = C(:,2);
...
vu = C(:,35);
results, in this example, in 35 lines of matlab program ; is there a solution like
[temperature, index, ... , vu] = C;
Where left side is a "list" of (column) vectors ? If so, my program would be more compact and readable. Thank you.
0 Comments
Accepted Answer
  the cyclist
      
      
 on 20 Sep 2012
        
      Edited: the cyclist
      
      
 on 4 Oct 2012
  
      In general, MATLAB would not be able to parse that syntax, because it could not predict that you want exactly one column per variable (as opposed to, say, two columns to temperature and one to index, etc.).
However, it is easy to write a function to do what you want:
function [varargout] = matrixToColumnVectors(X)
ncol = size(X,2);
for nc = 1:ncol
    varargout(nc) = {X(:,nc)};
end
end
Usage example:
>> x = rand(7,3);
>> [x1,x2,x3] = matrixToColumnVectors(x)
0 Comments
More Answers (1)
  Honglei Chen
    
      
 on 20 Sep 2012
        Here is a simple example. Not sure if it's exactly what you want, but it may get you started
x = magic(3)
y = mat2cell(x,size(x,1),ones(1,size(x,2)))
[a,b,c] = deal(y{:})
0 Comments
See Also
Categories
				Find more on Logical in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

