【发布时间】:2020-11-07 04:35:26
【问题描述】:
我在 MATLAB 中有一个包含三列的矩阵,给出 x、y 和 z 值:
+----+-----+----+
| 65 | 300 | 10 |
| 65 | 500 | 5 |
| 70 | 300 | 9 |
| 70 | 500 | 4 |
| 75 | 300 | 8 |
| 75 | 500 | 3 |
+----+-----+----+
如果需要,可以使 x 和 y 数据始终形成一个网格,但如果不必这样做,那将是有利的。
我想用这些数据创建一个 3D 表面。
我相信这意味着我需要转换数据以使我拥有 Z(x,y),例如:
+-----+----+----+----+
| | 65 | 70 | 75 |
+-----+----+----+----+
| 300 | 10 | 9 | 8 |
| 500 | 5 | 4 | 3 |
+-----+----+----+----+
此时我认为我可以调用surface(Z)。
在 MATLAB 中实现这一目标的最佳方法是什么?
【问题讨论】:
-
像您的示例一样,始终从网格中执行
x和y吗? -
嗨,路易斯,感谢您的回复!是的。
-
请将该信息编辑到问题中以重新打开它
-
同时,试试
M = [65 300 10; 65 500 5; 70 300 9; 70 500 4; 75 300 8; 75 500 3]; M = sortrows(M); ii = unique(M(:,1)); jj = unique(M(:,2)); surf(ii,jj,reshape(M(:,3), numel(jj), numel(ii))) -
@luisMendo -- 谢谢!在玩了一会儿之后,我意识到虽然我的数据可以形成一个网格,但在某些情况下(我不需要那么多数据)可能并不理想。如果我的数据集是“矩形”,有没有办法做到这一点?我已经更新了我的问题。感谢您的帮助!
标签: matlab matrix transform surface