How can I extract column vectors from matrix (with large number of columns) ?
39 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Respuesta aceptada
the cyclist
el 20 de Sept. de 2012
Editada: the cyclist
el 4 de Oct. de 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 comentarios
Más respuestas (1)
Honglei Chen
el 20 de Sept. de 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 comentarios
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!