构建三元网格,在 Matlab 中评估网格上的函数和等高线图

2023-12-14

我需要评估一个函数(比如说) Fxy = 2*x.^2 +3 *y.^2; 在三元网格 x 范围 (0 - 1)、y 范围 (0-1) 和 1-x-y (0 - 1) 上。 我无法构建需要评估上述函数的三元网格。另外,一旦评估,我需要在三元等高线图中绘制函数。理想情况下,我需要轴在 (x -> y--> (1-x-y)) 意义上逆时针旋转。

我已经尝试过该功能

function tg = triangle_grid ( n, t )

  ng = ( ( n + 1 ) * ( n + 2 ) ) / 2;
  tg = zeros ( 2, ng );

  p = 0;

  for i = 0 : n
    for j = 0 : n - i
      k = n - i - j;
      p = p + 1;
      tg(1:2,p) = ( i * t(1:2,1) + j * t(1:2,2) + k * t(1:2,3) ) / n;
    end
  end

  return
end

三角形边坐标之间的子间隔数

n = 10 (say)

以及等边三角形的边坐标

t = tcoord = [0.0, 0.5,           1.0;
              0.0, 1.0*sqrt(3)/2, 0.0];

这生成了一个三角形网格,其 x 轴从 0-1 开始,但其他两个不是从 0-1 开始。

我需要这样的东西:

wiki link

... 轴范围 0-1 (0-100也可以).

另外,我需要知道三角形网格内所有交叉点的坐标点。一旦我有了这个,我就可以继续评估这个网格中的函数。

我的最终目标是得到这样的东西。这是我需要实现的更好的表示(与我现在删除的上一个图相比)

better representation

请注意,两个三元图具有大小不同的等值轮廓。就我而言,差异是一个数量级,两个非常不同的 Fxy。

如果我可以将两个三元图绘制在彼此之上,然后评估三元平面上两个等值轮廓的交点处的成分。成分应从三元图中读取,而不是从定义三角形的矩形网格读取。 目前存在问题(如评论部分中突出显示的那样,一旦问题接近解决,将更新此问题)。


我是作者ternplot。正如你所猜测的那样,ternpcolor不会做你想做的事,因为它是为自动网格数据而构建的。回想起来,这并不是一个特别明智的决定,我做了笔记改变设计。同时这段代码应该做你想做的事:

编辑:我更改了代码以查找两条曲线的交点,而不仅仅是一条曲线。

N = 10;
x = linspace(0, 1, N);
y = x;

% The grid intersections on your diagram are actually rectangularly arranged,
% so meshgrid will build the intersections for us
[xx, yy] = meshgrid(x, y);
zz = 1 - (xx + yy);

% now that we've got the intersections, we can evaluate the function
f1 = @(x, y) 2*x.^2 + 3*y.^2 + 0.1;
Fxy1 = f1(xx, yy);
Fxy1(xx + yy > 1) = nan;

f2 = @(x, y) 3*x.^2 + 2*y.^2;
Fxy2 = f2(xx, yy);
Fxy2(xx + yy > 1) = nan;

f3 = @(x, y) (3*x.^2 + 2*y.^2) * 1000; % different order of magnitude
Fxy3 = f3(xx, yy);
Fxy3(xx + yy > 1) = nan;

subplot(1, 2, 1)
% This constructs the ternary axes
ternaxes(5);

% These are the coordinates of the compositions mapped to plot coordinates
[xg, yg] = terncoords(xx, yy);
% simpletri constructs the correct triangles
tri = simpletri(N);

hold on
% and now we can plot
trisurf(tri, xg, yg, Fxy1);
trisurf(tri, xg, yg, Fxy2);
hold off
view([137.5, 30]);

subplot(1, 2, 2);
ternaxes(5)
% Here we plot the line of intersection of the two functions
contour(xg, yg, Fxy1 - Fxy2, [0 0], 'r')
axis equal

enter image description here

编辑2:如果你想找到两个轮廓之间的交点,你实际上是在求解两个联立方程。这段额外的代码将为您解决这个问题(请注意,我现在也在上面的代码中使用了一些匿名函数):

f1level = 1;
f3level = 1000;
intersection = fsolve(@(v) [f1(v(1), v(2)) - f1level; f3(v(1), v(2)) - f3level], [0.5, 0.4]);
% if you don't have the optimization toolbox, this command works almost as well
intersection = fminsearch(@(v) sum([f1(v(1), v(2)) - f1level; f3(v(1), v(2)) - f3level].^2), [0.5, 0.4]);

ternaxes(5)
hold on
contour(xg, yg, Fxy1, [f1level f1level]);
contour(xg, yg, Fxy3, [f3level f3level]);
ternplot(intersection(1), intersection(2), 1 - sum(intersection), 'r.');
hold off

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

构建三元网格,在 Matlab 中评估网格上的函数和等高线图 的相关文章

  • 傅里叶变换定理 matlab

    我目前正在尝试理解二维傅里叶位移定理 根据我到目前为止所了解到的情况 图像空间中的平移会导致相位差异 但不会导致频率空间中的幅度差异 我试图用一个小例子来演示这一点 但它只适用于行的移位 而不适用于列的移位 这是一个小演示 我只在这里显示幅
  • 在 Plotly Density_Mapbox 上添加 GeoJSON 等高线作为图层

    我想在上面添加天气轮廓plotly density mapbox地图 但我不确定必要的步骤 首先 我创建了一个matplotlib等值线图以可视化数据 然后 我用了geojsoncontour创建一个geojson文件来自所说matplot
  • 为什么matlab的mldivide比dgels好这么多?

    Solve Ax b 真正的双 A是超定的 Mx2 其中 M gt gt 2 b是MX1 我运行了大量的数据mldivide 并且结果非常好 我用 MKL 写了一个 mex 例程LAPACKE dgels但它远没有那么好 结果有大量噪音 并
  • 为什么 MATLAB 本机函数 cov(协方差矩阵计算)使用与我预期不同的除数?

    给定一个 M 维和 N 个样本的数据矩阵数据 例如 data randn N M 我可以计算协方差矩阵 data mu data ones N 1 mean data cov matrix data mu data mu N 如果我使用原生
  • 为什么 MATLAB 在打印大量 (.png) 图形时速度会变慢?

    我正在将大量数字打印为 png 文件 每个图都是数据矩阵中的一列图 我获取 png 文件并将它们串在一起形成动画 我的问题是 前几百张图像打印得很快 但创建每个新图形的时间却迅速增加 从前几百个 png 文件的约 0 2 秒到第 800 个
  • 使用 ggplot 未完全填充等值线图

    我正在尝试使用以下方法绘制我的第一个填充等高线图ggplot 根据我的数据 我期待类似的结果 但我的结果是 a lt c 1 1 1 1 1 3 1 2 2 2 2 2 2 5 2 1 3 3 3 3 1 3 2 b lt c rep c
  • 在Matlab中选择图像上的像素时,索引指的是什么?

    当在Matlab中查看图像的单个像素时 该索引指的是什么 X Y 指的是像素的坐标 RGB 指的是颜色 但是关于索引是什么有什么想法吗 为了澄清一下 当我在 Matlab 中查看图形并使用数据光标选择一个点时 显示的三行是 X Y 指数 R
  • 使用 R2010b 中的符号工具箱来求解和/或 linsolve

    我前几天问了一个问题here https stackoverflow com questions 20317038 matlab linear congruence solver that supports a non prime modu
  • 归一化互相关的基础知识

    我正在尝试使用范数校正2 归一化互相关 http en wikipedia org wiki Cross correlation Normalized cross correlation 来自 MATLAB 用于计算发育中胚胎中移动形状的速
  • 直方图均衡结果

    I am trying to code histogram equalization by my self but the results are different from the built in function in matlab
  • Python 或 C 语言中的 Matlab / Octave bwdist()

    有谁知道 Matlab Octave bwdist 函数的 Python 替代品 此函数返回给定矩阵的每个单元格到最近的非零单元格的欧几里得距离 我看到了一个 Octave C 实现 一个纯 Matlab 实现 我想知道是否有人必须用 AN
  • 命令 A(~A) 在 matlab 中的真正作用是什么

    我一直在寻找找到矩阵非零最小值的最有效方法 并在论坛上找到了这个 设数据为矩阵A A A nan minNonZero min A 这是非常短且高效的 至少在代码行数方面 但我不明白当我们这样做时会发生什么 我找不到任何关于此的文档 因为它
  • Numpy 相当于 MATLAB 的 hist [重复]

    这个问题在这里已经有答案了 由于某种原因 Numpy 的 hist 总是返回比 MATLAB 的 hist 少 1 个 bin 例如在 MATLAB 中 x 1 2 2 2 1 4 4 2 3 3 3 3 Rep Val hist x un
  • Matlab的导入函数的范围是什么?

    我正在尝试将一些用 Matlab 编写的代码转换为独立的 编译的 Matlab 应用程序 然而 在出现一些奇怪的错误之后 我意识到代码大量使用了从路径中添加和删除的操作 以避免多次使用多个具有相同名称 但结果 计算不同 的函数这一事实 环顾
  • 禁止 MATLAB 自动获取焦点[重复]

    这个问题在这里已经有答案了 我有以下问题 在我的 MATLAB 代码中 我使用如下语句 figure 1 更改某些数据的目标数字 问题是 在此 MATLAB 之后 系统将焦点集中在具有该图形的窗口上 当我在后台运行一个大脚本并尝试在计算机上
  • 如何在 MATLAB 编译的应用程序中运行外部 .m 代码? [复制]

    这个问题在这里已经有答案了 我有一个 MATLAB 项目 我使用 MCC 对其进行编译以获得单个可执行文件 然后我想知道外部程序员是否可以在 exe 中执行他的一些 m 文件 而无需重新编译整个项目 重点是提供一个应用程序 其他开发人员可以
  • 在 MATLAB 中绘图后恢复轴

    从文本文件绘制多种方法的输出后 未显示轴的右侧和上侧 我需要拥有它们并将它们加粗 就像当前的轴一样 绘制的数据来自存储每种方法数据的文件 每个数据文件都是一个 256x2 文件 包含 0 1 之间的值 第一列是精度 第二列是召回率 figu
  • 通过 cuFFT 进行逆 FFT 缩放

    每当我使用 cuFFT 绘制程序获得的值并将结果与 Matlab 的结果进行比较时 我都会得到相同形状的图形 并且最大值和最小值位于相同的点 然而 cuFFT 得到的值比 Matlab 得到的值大得多 Matlab代码是 fs 1000 s
  • MATLAB - 通过垂直连接子矩阵重新排列矩阵

    我在执行以下任务时遇到问题 假设一个 3x6 矩阵 A 0 2787 0 2948 0 4635 0 8388 0 0627 0 0435 0 6917 0 1185 0 3660 0 1867 0 2383 0 7577 0 6179 0
  • 在 Matlab 中保存 Kinect 深度图像?

    通过使用 Kinect 我可以获得深度图像 其中每个深度图像像素存储相机和物体之间的距离 以毫米为单位 现在我想保存它们以便以后使用 最好的推荐是什么 我正在考虑将深度图像保存为图像 jpg png等 然而 该值通常是从50毫米到10000

随机推荐

  • 如何在 Javascript 中使用 PHP 变量?

    我知道你不能直接在 javascript 代码中使用 PHP 变量 但是有办法解决吗 我需要在 javascript 中使用这些参数 username example co uk password example 它不显示 user id
  • 如何使用 ARM 模板创建标准类型逻辑应用

    我可以使用 ARM 模板通过示例工作流程创建消费类型逻辑应用程序 我想使用 ARM 模板创建带有示例工作流程的标准类型逻辑应用程序 但是 我找不到上述文档的任何参考文档 那么 任何人都可以帮我解决这个问题吗 抱歉 在我之前的回答中 我误解了
  • 如何在空手道 UI 驱动程序中处理 SSL 证书?

    When I open my resource I am faced with notification Your connection is not private Is there a way to disable the verifi
  • 从其他表中选择一个值时插入

    我想insert新值放入表中where其中一个值是从带有条件的另一个表中选择的 另一个值是常量 硬编码 该命令给出语法错误 INSERT INTO table1 itemId reservedId VALUES SELECT id FROM
  • iPhone - CLHeading 寻找方向

    在我的 iPhone 应用程序中 我使用 CLLocationManager 来查找我的 iPhone 指向的方向 我正在使用 标题 属性 它给了我 x y 和 z 值 如何从这些值中找到我当前指向的方向 北或南或东或西 你应该使用方法 l
  • 自定义查询分页 Cakephp

    我的控制器中有一个自定义查询 我想实现在 cakephp org 上找到的自定义查询分页 但他们的示例与我的示例不相似 有人可以帮我根据我的观点对这个结果进行分页吗 cars this gt Car gt query select Car
  • Java:类.this

    我有一个看起来像这样的 Java 程序 public class LocalScreen public void onMake aFuncCall LocalScreen this oneString twoString 什么是LocalS
  • PHP 会话启动“无法发送会话 cookie 和缓存限制器”

    我已将我的托管服务器从 Windows 系统更改为 Linux 系统 但是当我运行 PHP 程序时 出现以下错误 Warning session start function session start Cannot send sessio
  • 添加 firebase-ui-auth:2.3.0 依赖项时出错

    我从昨天开始就面临这个问题 我添加 Add Library compile com android support design 26 1 0 compile com firebaseui firebase ui 0 2 0 compile
  • 使用异步任务在 gridview 中加载图像,未正确加载

    我正在尝试在 gridview 异步中加载缩略图 因为其他方式显示时间太长 当我以正常方式进行操作时 它可以很好地显示图像 代码和图像 Utils public static Bitmap getThumbnail Context cont
  • ValueError:未知的 MS 编译器版本 1900

    我正在尝试使用 cygwin mingw 在 Windows 10 上使用 Python 3 5 运行一些代码 准确地说 我使用的是 PyDSTool 模块 我将其称为 dopri 积分器 问题是 我遇到了麻烦distutils无法识别 M
  • 在 WooCommerce 中列出带有订单详细信息的优惠券

    我有一个有 1000 张优惠券的网站 所有优惠券的使用限额均为一张 我使用 Raunuk Gupta 提供的代码直接从 SQL 数据库导出优惠券 WooCommerce 优惠券如何存储在数据库中 是否可以检索使用优惠券的用户的订单元 我想在
  • 查询 Parquet 记录中的嵌套数组

    我正在尝试不同的方法来查询记录数组中的记录并将完整的行显示为输出 我不知道哪个嵌套对象有字符串 pg 但我想查询特定对象 对象是否有 pg 如果 pg 存在 那么我想显示完整的行 如何在嵌套对象上编写 spark sql查询 而不指定对象索
  • Swift 中的不可变/可变集合

    我指的是 Apple 的 Swift 编程指南 以了解用 Swift 语言创建可变 不可变对象 数组 字典 集合 数据 但我无法理解如何在 Swift 中创建不可变集合 我希望看到 Swift 中 Objective C 中的等价物 不可变
  • Boost::signals2 - 使用槽解析对象

    考虑一下 include
  • 具有自定义 VPN 连接的 iOS 应用程序

    我想创建可以使用 PPTP L2TP 或 OpenVPN 连接到 VPN 的应用程序 但我找不到任何有关此的信息 仅在ios 8 SDK中找到有关使用IPSec和IKEv2的信息 如果您想在 ios 8 中以编程方式连接 则只能使用 IPS
  • iPhone Mapkit 将自定义图像和图钉添加到注释中

    我正在尝试将图钉颜色从默认红色更改为自定义图像 但我所做的任何尝试都不起作用 我从这个网站下载了示例代码 http icodeblog com 2009 12 21 introduction to mapkit in iphone os 3
  • 将 UIActivityIndi​​cator 添加到模态视图(ELCimagepicker)

    我已将 ELCimagepicker https github com Fingertips ELCImagePickerController 添加到我的项目中 它运行良好 允许用户为幻灯片选择多个图像 但是 当您单击 保存 时 可能会出现
  • ASP.net AJAX 拖/放?

    我想知道是否有人知道是否有一个预先制定的解决方案 我在 ASP net 网站上有一个列表 我希望用户能够通过拖放对列表进行重新排序 此外 我希望有第二个列表 用户可以将第一个列表中的项目拖到其中 到目前为止 我找到了两个解决方案 重新排序列
  • 构建三元网格,在 Matlab 中评估网格上的函数和等高线图

    我需要评估一个函数 比如说 Fxy 2 x 2 3 y 2 在三元网格 x 范围 0 1 y 范围 0 1 和 1 x y 0 1 上 我无法构建需要评估上述函数的三元网格 另外 一旦评估 我需要在三元等高线图中绘制函数 理想情况下 我需要