我正在绘制以下数据:
a=[...
0.1, 0.7, 0.00284643369242828;...
0.1, 0.71, 0.00284643369242828;...]
这样第1列永远不会超过大约10 也是如此,第2列从.7变为1。
第3列似乎没问题
当我使用surf(a)
绘制表面图时,它看起来像这样:
似乎没有正确考虑x和y应该是什么。
那里看起来有点奇怪吗?
答案 0 :(得分:0)
我认为您需要尝试以下两种方法之一:将高度列分解为自己的矩形矩阵Z并使用surf(Z)
绘制相对于其在矩阵中的位置的每个点(因此您的x-和y轴不会按照你想要的方式缩放),或者你可以将你想要的x和y坐标放在他们自己的矢量中,并绘制矩阵Z(在每个点(xi,yj)定义所有i中的N和M在M中,其中x是N个元素长,y是M个元素long)surf(x,y,Z)
。
x = 0.1:0.1:10; % or whatever increment you need
y = 0.7:0.01:1; % or whatever increment you need
Z = zeros(length(x),length(y); % initialized to the correct size, fill with data
我认为你将不得不重新生成你的Z数据,以便它在矩形矩阵中(x中的元素)(维度中的元素)。
编辑:您无需重新创建数据。如果您知道y中的x和m个唯一元素中有n个唯一元素,则可以使用:
X = reshape(data(:,1),m,n);
Y = reshape(data(:,2),m,n);
Z = reshape(data(:,3),m,n);
surf(X,Y,Z);
这应该可以满足您的需求。