Clear Filters
Clear Filters

Extracting and formatting data

1 view (last 30 days)
Hi all,I am trying to do the following: Let's say I have two matrices
A =
2
2
1
3
B =
0.1000
0.0030
0.0500
0.0200
0.4000
0.0600
0.0900
1.0000
Every value from matrix A represents the number of values I would like to extract from matrix B. For example: if the first value in matrix A is 2, then I would like to extract first two values from B in a row [0.1,0.003] and so on.
  4 Comments
Rik
Rik on 20 Nov 2017
And how did you want to save those different parts?
Doina Gumeniuc
Doina Gumeniuc on 21 Nov 2017
Hi Rik! I will fprint them into a vtk input file. In B I have numerous columns so I would like to take it column by column using the same values from A

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 20 Nov 2017
B_cell = mat2cell(B, A, size(B,2));
  5 Comments
Walter Roberson
Walter Roberson on 26 Nov 2017
B_cell = mat2cell(B, A, ones(1,size(B,2)));
Doina Gumeniuc
Doina Gumeniuc on 26 Nov 2017
wow..Great, thank you a lot!

Sign in to comment.

More Answers (1)

Rik
Rik on 19 Nov 2017
A solution that might not scale well, is to convert A to a cell (with num2cell), use cellfun with @(x) 1:x, make sure it is a row array, convert back to a normal vector (with cell2mat) and use that as the index to B (so C=B(index_vector);)

Community Treasure Hunt

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

Start Hunting!