给定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,因此,如果这是可能的,一些代码片段和结果,将对我非常有帮助。谢谢。
发布于 2012-09-01 11:25:37
我只能解决Matlab端的问题,因为我不熟悉C#,但我认为Matlab编译器应该能够导出所有函数?
1:您可以使用动画3D散点图(以及曲面、网格、线状图等变体)绘制4维数据。一般的3D视频游戏,如果你仔细想想,基本上是一个4D的情节。对于散点图,从0秒开始,使用x=t1,y=t2,z=t3只绘制那些t4 =0的点。在1秒的时候,只用t4=1绘制那些,在2秒的时候,只画t4=2,依此类推,直到你达到max(t4),然后循环回来。
您还可以使用颜色作为第四个维度,以便在3D空间中具有彩色点。
我认为,从这些点可以推广到其他的情节。
参见http://www.mathworks.com/help/techdoc/ref/scatter3.html和http://www.mathworks.com/help/techdoc/ref/surf.html。
他说:让我来澄清几件事。给定没有坐标可以为负数的初始条件:
t2<=5定义了一个无限的4维空间的“平板”,它在3维空间中是无限的,在1维空间中是有限的(它有5个单位厚)。板的一条边位于原点和<0, 5, 0, 0>之间,连接到原点的其他三条边沿着t1、t3和t4定义了一个有限的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])https://stackoverflow.com/questions/12224504
复制相似问题