## Extracting Data from Cells

### Devrim Tugberk (view profile)

on 19 Jul 2019
Latest activity Commented on by madhan ravi

on 19 Jul 2019

Dear Matlab users,
I am facing some trouble extracting data from a cell. I attached the a screenshots showing what my cell looks like (cells within a cell). Each cell in the "big" cell has xyz data and i would like to extract each column representing the respective coordinates as column vectors.
My explanation might have been confusing so i will try summarize: Extract the "minor" cells from the main cell, extract the xyz from each minor cell as column vectors.
Thank you for the help

Guillaume

### Guillaume (view profile)

on 19 Jul 2019
What does extract mean? What do you want to do afterward?

on 19 Jul 2019
I interpreted it as an indexing question.
Devrim Tugberk

### Devrim Tugberk (view profile)

on 19 Jul 2019
My goal was the "extract" the xyz coordinates as column vectors and plot them using scatter3()

### Tags

on 19 Jul 2019

on 19 Jul 2019

vv=cellfun(@(x) x(:,1:3),cross_sections,'un',0); % assuming the first three columns in each cell represents x,y & z
v=cat(1,vv{:}); % gathering x,y, & z of each cell into one matrix
scatter3(v(:,1),v(:,2),v(:,3))
% x -^ ^- y ^- z

Devrim Tugberk

### Devrim Tugberk (view profile)

on 19 Jul 2019
Perfect! Thank you all very much
Devrim Tugberk

### Devrim Tugberk (view profile)

on 19 Jul 2019
One last tiny tweak, is there a way I could supress the scatter3 function so it doesnt spit out 138 figures? Maybe just give me 138 tables or vectors or something which i can refer back to and plot the desired one only?

on 19 Jul 2019
Then for instance:
scatter3(vv{2}(:,1),vv{2}(:,2),vv{2}(:,3))

on 19 Jul 2019

on 19 Jul 2019

I think this is the format of your data:
C = {rand(20,4),rand(15,4),rand(22,4)};
Extract the first 3 columns of cell 2
C{2}(:,1:3)
Extract column 2 of cell 3
C{3}(:,2)
Extract the entire matrix from cell 1
C{1}
Extract the entire matrix from cell 1 but reorganize it into a single column
C{1}(:)

#### 1 Comment

on 19 Jul 2019
"My goal was the "extract" the xyz coordinates as column vectors and plot them using scatter3()"; " I need to have 3 column vectors for each cell"
@ Devrim Check out the 2nd block of code in my answer. It does what you're describing. If you want to perform that block on all cells,
c3 = cellfun(@(x)x(:,1:3), C, 'UniformOutput', false)

### Guillaume (view profile)

on 19 Jul 2019
Edited by Guillaume

### Guillaume (view profile)

on 19 Jul 2019

If you want to create a scatter3 plot using the coordinates from all the cells of Cross_sections, this is how I'd go about it:
allsections = vertcat(Cross_sections{:});
scatter3(allsections(:, 1), allsections(:, 2), allsections(:, 3));