using mat2cell

I'm sorry for asking this question again, but I really, really don't understand how mat2cell works. I have a matrix of size 1001*10, and I need it to be divided into 10 cells, each containing 1001 datapoints. EDIT: I also need to manipulate the data later on, so I need to be able to and new sizes of the vectors back into the cell. I.e., taking a vector of 1001 datapionts out, and adding a vector of a different size back in to the cell.

1 Comment

Stephen23
Stephen23 on 11 Jan 2022
" taking a vector of 1001 datapionts out, and adding a vector of a different size back in to the cell."
What does that have to do with your original question?
Creating a cell array is a totally different thing to using indexing to access the content of a cell array:
If ou want to get those vectors out and put other vectors back in then use indexing. Indexing is how MATLAB arrays accessed, whatever class they might be. But such indexing has absolutely nothing to do with MAT2CELL.

Sign in to comment.

Answers (2)

Stephen23
Stephen23 on 11 Jan 2022
Edited: Stephen23 on 11 Jan 2022
Using NUM2CELL would be simpler:
C = num2cell(M,1)
But if you insist on using MAT2CELL:
C = mat2cell(M,1001,ones(1,10))

3 Comments

Tested:
M = rand(1001,10);
C1 = num2cell(M,1)
C1 = 1×10 cell array
{1001×1 double} {1001×1 double} {1001×1 double} {1001×1 double} {1001×1 double} {1001×1 double} {1001×1 double} {1001×1 double} {1001×1 double} {1001×1 double}
C2 = mat2cell(M,1001,ones(1,10))
C2 = 1×10 cell array
{1001×1 double} {1001×1 double} {1001×1 double} {1001×1 double} {1001×1 double} {1001×1 double} {1001×1 double} {1001×1 double} {1001×1 double} {1001×1 double}
isequal(C1,C2)
ans = logical
1
I've added more info that explains what I need to be able to do later on. Can you please take a look again?
Stephen23
Stephen23 on 11 Jan 2022
Edited: Stephen23 on 11 Jan 2022
"I've added more info that explains what I need to be able to do later on."
What you added is an entirely different question, which is answered by using indexing:

Sign in to comment.

Torsten
Torsten on 11 Jan 2022
C = mat2cell(M.',ones(1,10)); % M is your 1001x10 numerical matrix

Categories

Tags

Asked:

on 11 Jan 2022

Edited:

on 11 Jan 2022

Community Treasure Hunt

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

Start Hunting!