0

I have this cell array of matrices:

a = [14x16 double] [14x17 double] [14x27 double][14x62 double] [14x16 double] 

Unfortunately, I don't want that. What I need is to get all the vectors in the matrix and get a large cell array of vectors.

How can I achieve this?

I need an array of size 16+17+27+62+16 where every vector has 14 elements.

I haven't used matlab a lot before, I am sure this is sort of trivial. Can someone help?

0

1 Answer 1

0

You can call num2cell on each of the cell arrays, and then concatenate them all using cat.

%// Generate some test data a = arrayfun(@(x)rand(14, x), [16 17 27 62 16] , 'uni', 0); [14x16 double] [14x17 double] [14x27 double] [14x62 double] [14x16 double] %// Now merge them into a cell array of vectors newcell = cellfun(@(x)num2cell(x, 1), a, 'uni', 0); newcell = cat(2, newcell{:}); 

And just to verify that everything is the dimension we expect

isequal(size(newcell), [1 16+17+27+62+16]) 1 isequal(size(newcell{1}), [14 1]) 1 

If instead you simply want a large matrix, you can just concatenate the initial data into a matrix (along the second dimension):

matrix = cat(2, a{:}); size(matrix) 14 138 

I would recommend the matrix approach as opposed to the cell array approach as MATLAB is highly optimized to perform operations on matrices. You will definitely take a performance hit using cell arrays instead.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.