Extracting Data from Cells

9 vues (au cours des 30 derniers jours)
Devrim Tugberk
Devrim Tugberk le 19 Juil 2019
Modifié(e) : Franklin le 15 Avr 2022
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
Capture.JPG
Capture_1.JPG
  3 commentaires
Adam Danz
Adam Danz le 19 Juil 2019
I interpreted it as an indexing question.
Devrim Tugberk
Devrim Tugberk le 19 Juil 2019
My goal was the "extract" the xyz coordinates as column vectors and plot them using scatter3()

Connectez-vous pour commenter.

Réponse acceptée

madhan ravi
madhan ravi le 19 Juil 2019
Modifié(e) : madhan ravi le 19 Juil 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
  7 commentaires
Devrim Tugberk
Devrim Tugberk le 19 Juil 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?
madhan ravi
madhan ravi le 19 Juil 2019
Then for instance:
scatter3(vv{2}(:,1),vv{2}(:,2),vv{2}(:,3))

Connectez-vous pour commenter.

Plus de réponses (2)

Adam Danz
Adam Danz le 19 Juil 2019
Modifié(e) : Adam Danz le 19 Juil 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 commentaire
Adam Danz
Adam Danz le 19 Juil 2019
Modifié(e) : Adam Danz le 19 Juil 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)

Connectez-vous pour commenter.


Guillaume
Guillaume le 19 Juil 2019
Modifié(e) : Guillaume le 19 Juil 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));
  3 commentaires
Guillaume
Guillaume le 19 Juil 2019
Indeed! Otherwise, the operation does nothing.
Franklin
Franklin le 15 Avr 2022
Modifié(e) : Franklin le 15 Avr 2022
Hello All;
I have a 70x1 cell data called info. Inside info is the 1x1 struct, each with 2 variables A and B. index 1.A and 1.B have a size(827x1) while all others 2.A or 2.B...70 are 1348x1.
Am able to extract some portions of "info" e.g. Y_1...Y_5 which I would use for my Y axis on the plot
Q1. How do I plot test1 (Y axis) against X_2(X Axis) without array errors e.g. Arrays have incompatible sizes for this operation.
Q2. How do I get Yall using a Loop or any faster method
Code:
Y_2 = info{2}(:,1).B; % Get Cell 2B data i.e. 1348x1 double
Y_3 = info{3}(:,1).B; % Get Cell 3B data i.e. 1348x1 double
Y_4 = info{4}(:,1).B; % Get Cell 4B data i.e. 1348x1 double
Y_5 = info{5}(:,1).B; % Get Cell 5B data i.e. 1348x1 double
X_1 = info{1}(:,1).A; % Get Cell 1A data i.e. 827x1 double
X_2 = info{5}(:,1).A; % Get Cell 5A data i.e. 1348x1 double
Yall = Y_2...Y_70; % Get all Y values using a loop
test1 = Yall./X_1;
figure(2)
plot(X_2,test1);hold on;
figure(3)
plot(X_1,test1);hold on;

Connectez-vous pour commenter.

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by