2013-10-24 117 views
3

我有个矩阵M 10201x3其中第一列2是常数用于计算在柱3。实施例的响应Z等高线图与3矢量

.... ...  ................. 
0.0031 0.02 0.792729854583740 
0.0031 0.03 0.802729845046997 
0.0031 0.04 0.812729895114899 
0.0031 0.05 0.822729885578156 
.... ...  ................. 
0.0034 0.02 0.867461800575256 
0.0034 0.03 0.877461791038513 
0.0034 0.04 0.887461841106415 
0.0034 0.05 0.897461831569672 
0.0034 0.06 0.907461822032929 
.... ...  ................. 

我要让的等高线图,其中X = M(:,1)Y = M(:,2)Z = M(:,3)不同高度的不同颜色。我需要在2D和3D中做同样的事情。

+0

所以,你已经尝试过这种http://www.mathworks.com/help/m那么atlab/ref/contour.html?让我们看看一些代码 – Dan

回答

4

我假设你的数据是有规律的,你知道你有多少个重复的x元素。 我们打电话给number of repeating x = L - 或者你可以找到。

你需要重塑你的载体:

X = reshape(X,[],L); 
Y = reshape(Y,[],L); 
Z = reshape(Z,[],L); 

你需要Z是怎么回事,但只是X第一排和Y第一列。

X = X(:,1); 
Y = Y(1,:); 

,然后你可以使用contour

contour(X,Y,Z); 

无需插值!

轮廓(X,Y,Z),轮廓(X,Y,Z,n)和轮廓(X,Y,Z,V)绘制轮廓用X和Y来确定的Z 曲线x轴和y轴限制。

如果X和Y是矢量,则X的长度必须等于 列数中Z和Y的长度必须等于Z.

行数如果X和Y是矩阵,那么它们的大小必须等于Z.

的大小

因此短:

X = X(1:L:end); 
Y = Y(1:L); 
Z = reshape(Z,[],L); 

contour(X,Y,Z); 
1

我建议使用插值功能griddata()将此数组转换为三个二维数组。插值可能对非正规数据有用。首先,我们创建坐标网格:

xq=min(X):(max(X)-min(X))/200:max(X); 
yq=min(Y):(max(Y)-min(Y))/200:max(Y); 

[Xq, Yq] = meshgrid(xq,yq); 

比,我们使用插值:

Zq =griddata(X,Y,Z,Xq,Yq); 

比你能画出:

countour(Xq,Yq,Zq)