How can I extract column vectors from matrix (with large number of columns) ?
39 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 Matrix Indexing 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!