0

给定t1,t2,t3,t4 为实值参数,以及以下格式的约束:

(t1>=0 and t2>=0 and t3>=0 and t4>=0) 

((t2<=5) or (t1+t2+t3+t4<=3))

可以使用 matlab 的 .net 库绘制此约束吗?(我正在使用 C#)。

我关心的是: 1.这有四个维度,我不确定在Matlab中如何表示图形;2.基本上这个约束可能会导致一个凸多边形,这样的多边形可以在Matlab中绘制吗?

我是 Matlab 的新手,因此如果可能的话,一些代码片段和结果对我很有帮助。谢谢。

4

1 回答 1

3

我只能解决它的 Matlab 方面,因为我不熟悉 C#,但我认为 Matlab .NET 编译器应该能够导出所有函数?

1:您可以使用动画 3D 散点图(以及曲面、网格、线图等变体)绘制 4 维数据。如果你仔细想想,你的普通 3D 视频游戏基本上是一个 4D 情节。对于散点图,从 0 秒开始,仅绘制 t4 = 0、x=t1、y=t2、z=t3 的点。在 1 秒时,仅绘制 t4=1 的那些。在 2 秒时,只有 t4=2,依此类推,直到达到 max(t4),然后循环返回。

您还可以将颜色用作第 4 维,以便在 3D 空间中拥有彩色点。

我认为,从可以概括到其他情节的点。

请参阅http://www.mathworks.com/help/techdoc/ref/scatter3.htmlhttp://www.mathworks.com/help/techdoc/ref/surf.html

2:让我澄清一些事情。鉴于您的初始条件,没有坐标可以是负数:

  • t2<=5定义了一个无限 4 维空间的“板”,它在 3 维空间中是无限的,在 1 维空间中是有限的(它有 5 个单位厚)。板的一条边位于原点 和 之间,连接到原点的其他三个边沿和轴<0, 5, 0, 0>在正方向上延伸至无穷远t1t3t4
  • t1+t2+t3+t4<=3定义一个有限的 4 维金字塔,其尖端位于原点,底部朝该<+, +, +, +>方向。

给定您的OR,结果是这两个空间的并集。(hyper)pyramid 已经是 (hyper)slab 的一个子集,所以第二个表达式是多余的。平板是微不足道的,所以我将展示如何只可视化金字塔。

为了将其可视化,我认为您应该将 t4 设置为 10 个不同的值,并将其他 3 个参数中的每一个都绘制为不同颜色的表面。

一个例子:

clc
clear
close all

n = 10;

% Manually calculated maximae of x, y, z axes
x = [0 0; 0 3];
y = [0 0; 3 0];
z = [3 3; 0 0];   % surf can only draw polygons, not triangles, so we just squash two points together

% Actual t will be derived from this algorithmically
t = [3 3; 3 3];

% So plots don't replace each other
hold on

for i = 0:0.1:1
    % Manually derived
    surf(x*i, y*i, z*i, t*(1-i));
end
hold off

% Just some aesthetic stuff
xlabel('t1'); 
ylabel('t2'); 
zlabel('t3');
grid on
colormap('hot')

在此处输入图像描述

对于不同的 t4,每种颜色都是金字塔的底部(尖端位于原点) - 您可能会想象 3D 金字塔会随着时间的推移而“缩小”。

我不知道相关性,但凸多边形在 Matlab 中非常好:

plot([0 0 1 1 2 2 3 3 0], [0 2 2 1 1 2 2 0 0]); axis([-1 4 -1 4])
于 2012-09-01T03:25:37.433 回答