鱼C论坛

 找回密码
 立即注册
查看: 4148|回复: 7

[已解决]matlab如何实现 由三个变量决定的三维图?

[复制链接]
发表于 2023-8-8 16:17:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Nicole37 于 2023-8-8 16:18 编辑

各位大佬,matlab有没有一种画图工具能展现:由 x y z三个变量决定的函数值f(x,y,z) ,目的是想看出在哪点上f的值最大
我查过matlab的绘图工具,感觉好像slice, isosurface,scatter3 都不太行,它们要求的维度匹配 实现起来很困难。呜呜,求助求助!!
最佳答案
2023-8-8 16:17:48
在 MATLAB 中,你可以使用 meshgrid 函数和 surf 函数来绘制由三个变量决定的三维图。

首先,使用 meshgrid 函数创建 x、y、z 三个变量的网格。这将为你提供一个三维坐标系的点集合。

然后,根据函数 f(x, y, z) 的定义,计算出每个点的函数值。

最后,使用 surf 函数将这些点绘制成三维图形。

以下是一个简单的示例代码:

  1. % 定义函数 f(x, y, z)
  2. f = @(x, y, z) x^2 + y^2 + z^2;

  3. % 定义范围和间隔
  4. x = -1:0.1:1;
  5. y = -1:0.1:1;
  6. z = -1:0.1:1;

  7. % 创建网格
  8. [X, Y, Z] = meshgrid(x, y, z);

  9. % 计算函数值
  10. F = f(X, Y, Z);

  11. % 绘制三维图形
  12. surf(X, Y, Z, F)
  13. xlabel('x')
  14. ylabel('y')
  15. zlabel('z')

  16. % 标记函数值最大点
  17. [max_value, max_index] = max(F(:));
  18. [max_x, max_y, max_z] = ind2sub(size(F), max_index);
  19. hold on
  20. scatter3(X(max_x, max_y, max_z), Y(max_x, max_y, max_z), Z(max_x, max_y, max_z), 'r', 'filled')
  21. hold off
复制代码


在这个示例中,函数 f(x, y, z) = x^2 + y^2 + z^2 定义了函数的形式。你可以根据自己的需求修改这个函数。示例代码中,x、y、z 的范围和间隔分别定义为 -1 到 1,步长为 0.1,你可以根据需要进行调整。

最后,使用 scatter3 函数标记出函数值最大点,并以红色填充。你可以将 'r' 修改为其他颜色码,以适应你的需求。

希望这个示例能帮助到你!如果你有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-8-8 16:31:47 | 显示全部楼层
isdkz 发表于 2023-8-8 16:17
你可以使用 surf 函数来实现由三个变量决定的三维图。这个函数可以绘制一个曲面,其中x、y和z分别表示曲面 ...

谢谢你的回复,我试了一下,我的函数值是3维矩阵,surf要求是向量或者2维数组,怎么办呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-8 16:32:35 | 显示全部楼层
学习编程中的Ben 发表于 2023-8-8 16:17
绘制由三个变量决定的三维图

在Matlab中,你可以使用meshgrid函数生成三个变量的网格,并使用这些变量计 ...

谢谢你的回复,我试了一下,我的函数值是3维矩阵,surf要求是向量或者2维数组,怎么办呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-24 02:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表