我有一个矩阵M
10201x3,其中前两列是常量,用于计算第3列中的响应Z
。示例:
.... ... .................
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 :(得分: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)绘制轮廓 Z的图使用X和Y来确定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 :(得分:1)
我建议使用函数griddata()
进行插值,将此数组转换为三个2D数组。插值可能对非正规数据有用。首先,我们创建坐标网格:
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)