【问题标题】:Using Matlab function `trisurf` to display results使用 Matlab 函数 `trisurf` 显示结果
【发布时间】:2013-02-28 07:24:39
【问题描述】:

我从 Gauss-Siedel 获得了一个解 u(求解二维泊松方程),我想使用 trisurf 绘制它。但是,我似乎无法理解trisurf 的工作原理(我尝试过使用它,但没有运气)。我还查看了 Matlab 文档,但我不明白峰值是什么。目前,我有这样的东西(但它不起作用):

ss = a:h:b; %subspace
[X,Y] = meshgrid(ss,ss);
tri = delaunay(X,Y);
Z = peaks(ss);
trisurf(tri,X,Y,Z);

我在哪里插入解值(向量u)?在这种情况下,peaks 必须采用哪些类型的值?

详情:

  • a = 下限
  • b = 上限
  • h = 步长
  • u = 解决方案 来自高斯-西德尔。它的大小取决于我的点数 在网格上进行评估。解决方案应该收敛,因为它是通过运行i 多次迭代获得的。

【问题讨论】:

  • 能否请您提供您正在使用的数字?
  • 或者至少是whos的矩阵大小?
  • @JesseB 你在说什么矩阵? u 是一个向量
  • 在我之前的评论中,我指的是向量,而不是矩阵。我看不出你是如何在代码中使用 u 的。
  • 我想我现在明白你的问题了。看看我的回答对你有没有帮助。

标签: debugging matlab plot numerical-methods


【解决方案1】:

首先,让我把whos的输出告诉你

  triangle_obj       1x1               540  TriScatteredInterp              
  u                 15x1               120  double                          
  X                 15x1               120  double                          
  Y                 15x1               120  double   

试试下面的方法。我认为您可能会发现这对您有用(假设您的所有点都不是共线的)。您可能会因为 TriScatteredInterp 中的 [X, Y] 参数混淆而感到困惑。

triangle_obj = TriScatteredInterp([X, Y], u);
figure
trisurf(triangle_obj, X, Y, u);

【讨论】:

  • (修改为使用 trisurf 而不是 trimesh;我的错误)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-19
  • 2021-06-17
  • 2010-10-21
  • 2021-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多