how can I reshape vector data into a matrix
5 views (last 30 days)
Show older comments
Daria Bontch-Osmolovskaia
on 31 Jul 2018
Commented: Daria Bontch-Osmolovskaia
on 1 Aug 2018
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.
0 Comments
Accepted Answer
Guillaume
on 31 Jul 2018
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 Comments
Guillaume
on 31 Jul 2018
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));
More Answers (0)
See Also
Categories
Find more on Discrete Data Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!