Plot 倍频程3D网格,来自文件的数据

Plot 倍频程3D网格,来自文件的数据,plot,3d,octave,mesh,Plot,3d,Octave,Mesh,我有一个大文件,有3列:密度、维度、值。 例如: 我正在尝试使用八度音阶的mesh()函数绘制3d plot-mesh,如下所示: data = load ("file.txt"); mesh(data(:,1), data (:,2), data (:,3)); 我的问题是,我总是遇到错误: 行(z)必须与长度(y)相同,列(z)必须与长度(x)相同 它使用函数plot3(),但我想要网格类型的绘图 问题在于mesh(X,Y,Z)期望使用X=meshgrid(X)和Y=meshgr

我有一个大文件,有3列:密度、维度、值。
例如:

我正在尝试使用八度音阶的
mesh()
函数绘制3d plot-mesh,如下所示:

data = load ("file.txt");   
mesh(data(:,1), data (:,2), data (:,3));  
我的问题是,我总是遇到错误:

行(z)必须与长度(y)相同,列(z)必须与长度(x)相同


它使用函数
plot3()
,但我想要网格类型的绘图

问题在于
mesh(X,Y,Z)
期望使用
X=meshgrid(X)
Y=meshgrid(Y)
生成
X
Y
矩阵,其中
X
Y
仅包含唯一点。您的数据基本上已经定义了网格,但很难将其导出

我建议将
重塑为:

X = reshape(data(:,1),m,n);
Y = reshape(data(:,2),m,n);    % might be reshape(data(:,2),n,m)
Z = reshape(data(:,3),m,n);
mesh(X,Y,Z);
在这种情况下,假设在
Y
中有
m
唯一值,在
X
中有
n
唯一值。在调用mesh时,您可能需要将它们转换为
mesh(X',Y',Z)
或类似的内容。

是的,重塑()是答案,我已经做到了,但谢谢。
X = reshape(data(:,1),m,n);
Y = reshape(data(:,2),m,n);    % might be reshape(data(:,2),n,m)
Z = reshape(data(:,3),m,n);
mesh(X,Y,Z);