how can I reshape vector data into a matrix

6 ビュー (過去 30 日間)
Daria Bontch-Osmolovskaia
Daria Bontch-Osmolovskaia 2018 年 7 月 31 日
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.

採用された回答

Guillaume
Guillaume 2018 年 7 月 31 日
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 件のコメント
Guillaume
Guillaume 2018 年 7 月 31 日
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));
Daria Bontch-Osmolovskaia
Daria Bontch-Osmolovskaia 2018 年 8 月 1 日
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

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeDiscrete Data Plots についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by