Can anyone help me with this please... I have a data set, shaped so. This needs to be graphed in 3D.
The first column represents locations on X-axis, the 2nd column - locations on Y-axis, and the third column is my data. The 1st & 2nd column make a grid.
How do I reshape this to make the 3rd column into a 2x2 matrix, so that the whole thing can be graphed as a surface?
Thank you beforehand!
D.

 Akzeptierte Antwort

Guillaume
Guillaume am 31 Jul. 2018

0 Stimmen

How do I reshape this to make the 3rd column into a 2x2 matrix, so that the whole thing can be graphed as a surface?
You don't, it's completely unnecessary
surf(yourmatrix(:, 1), yourmatrix(:, 2), yourmatrix(:, 3));
If you wanted to do the reshape (which again is completely unnecessary), and assuming that the X and Y coordinates that are supposed to be identical are actually identical down to the last binary digit, then:
[~, ~, col] = unique(yourmatrix(:, 1));
[~, ~, row] = unique(yourmatrix(:, 2));
X(row, col) = yourmatrix(:, 1);
Y(row, col) = yourmatrix(:, 2);
Z(row, col) = yourmatrix(:, 3);

4 Kommentare

Guillaume, thank you. I've tried using the SURF function, and I get an error message "Z must be a matrix, not a scalar or vector." Which is why I'm asking about reshaping...
Rik
Rik am 31 Jul. 2018
It feels like it should be a valid input, but it isn't. That is one of my frustrations with surf as a function.
Doh! Indeed Z has to be a matrix. And the second part of the answer was also incorrect. Never mind, this is correct:
[X, ~, col] = unique(yourmatrix(:, 1));
[Y, ~, row] = unique(yourmatrix(:, 2));
Z = zeros(numel(Y), numel(X));
Z(sub2ind(size(Z), row, col)) = yourmatrix(:, 3));
Guillame, thank you very much - that worked beautifully. Quite literally. Looks like the aurora :) Really appreciate your effort. Prior to this, I was only able to graph data interpolated, and that didn't work right. This is much better as I can see the crazy outliers. Cheers, Daria

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Discrete Data Plots finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by