[英]Matlab Graph Plotting
给定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完全陌生,因此,如果可能的话,一些代码片段和结果对我将非常有帮助。 谢谢。
由于我不熟悉C#,所以只能解决Matlab的问题,但是我认为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.html和http://www.mathworks.com/help/techdoc/ref/surf.html 。
2:让我澄清一些事情。 给定您的初始条件,即任何坐标都不能为负:
t2<=5
定义了一个无限的4维空间的“平板”,它在3维上是无限的,在1维上是有限的(5单位厚)。 平板的一个边缘位于原点和<0, 5, 0, 0>
,连接到原点的其他三个边沿t1
, t3
和t4
轴在正方向上延伸到无穷大。 t1+t2+t3+t4<=3
定义了一个有限的4维金字塔,其尖端在<+, +, +, +>
方向上位于原点和底部。 给定您的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')
每种颜色都是不同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])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.