i am working on a serial data and need to convert it from serial to parallel data.i have a matrix of 7500 x 1, and i need to divide it into 10 individual matrices of 750 x 1.

2 views (last 30 days)
i can use reshape and vec2mat.but it convert it into one matrix of 750 x 10

Accepted Answer

Stephen23
Stephen23 on 2 Sep 2017
Edited: Stephen23 on 2 Sep 2017
It is simple to split a matrix into matrices in a cell array using mat2cell, e.g.:
C = mat2cell(V,750*ones(10,1),1)
or using num2cell:
C = num2cell(reshape(V,[],10),1)
Do NOT try to automatically create matrices in the workspace: read this to know why:
  3 Comments
Stephen23
Stephen23 on 2 Sep 2017
Edited: Stephen23 on 2 Sep 2017
"but this does not suffice my question."
Really? Why not?
"i need to plit a 7500 x1 matix into 10 small matrix of 750 x 1."
Yes, that is what my code does.
"elements of splitted matrix should be of the same as in the parent matrix"
Yes, that is what my code does.
Did you even try it?
Lets have look:
>> V = rand(7500,1);
>> C = num2cell(reshape(V,[],10),1);
>> size(C) % show the number of output matrices = 10
ans =
1 10
>> size(C{1}) % show the size of the first output vector
ans =
750 1
Or if you want to see the size of every vector in C:
>> cell2mat(cellfun(@size,C(:),'uni',0))
ans =
750 1
750 1
750 1
750 1
750 1
750 1
750 1
750 1
750 1
750 1
So my code created ten 750x1 output vectors, just as you requested. Now lets have a look at the elements of the first vector:
>> V(1:8) % e.g. the first 8 elements of the original data
ans =
0.81472
0.90579
0.12699
0.91338
0.63236
0.09754
0.2785
0.54688
>> C{1}(1:8) % the first 8 elements of the first output vector
ans =
0.81472
0.90579
0.12699
0.91338
0.63236
0.09754
0.2785
0.54688
>>
Note that the elements are exactly the same, exactly as you require.
So there it is: my answer split your 7500x1 vector into ten vectors of size 750x1, with exactly the same elements as the original data vector. I have no idea why you think it does not work: can you please explain why you think it does not work?
Image Analyst
Image Analyst on 2 Sep 2017
In an above comment, he said "i am looking for some for loops" so I'm guessing that a for loop is what was specified in a homework problem - he just didn't tag it as homework.

Sign in to comment.

More Answers (0)

Tags

No tags entered yet.

Community Treasure Hunt

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

Start Hunting!