How can I extract column vectors from matrix (with large number of columns) ?

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.

 採用された回答

the cyclist
the cyclist 2012 年 9 月 20 日
編集済み: the cyclist 2012 年 10 月 4 日
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)

その他の回答 (1 件)

Honglei Chen
Honglei Chen 2012 年 9 月 20 日
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{:})

カテゴリ

ヘルプ センター および File ExchangeMatrix Indexing についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by