Matlab图形绘图

时间:2012-09-01 02:54:39

标签: c# visualization matlab matlab-deployment

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#)。

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

我在Matlab中是全新的,因此如果可能的话,一些代码片段和结果对我来说非常有用。感谢。

1 个答案:

答案 0 :(得分: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,依此类推,直到你达到最大值(t4)然后你回来。

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

从这些观点来看,你可以概括为其他情节,我想。

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

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

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

鉴于您的OR,结果是这两个空格的并集。 (超)金字塔已经是(超)平板的子集,因此第二个表达式是多余的。平板是微不足道的,所以我将展示如何只显示金字塔。

为了使其可视化,我认为您应该将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')

enter image description here

对于不同的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])