我有一个包含3列的大文件:密度,尺寸,值 例如:
10 0.3 200
10 0.4 300
20 0.3 250
20 0.4 320
我正在尝试绘制一个3d图 - 八度音程中带有mesh()
函数的网格,如下所示:
data = load ("file.txt");
mesh(data(:,1), data (:,2), data (:,3));
我遇到的问题是,我总是收到错误:
rows(z)必须与length(y)相同,列(z)必须与length(x)相同。
它适用于函数plot3()
,但我想要一种网格类型的图。
答案 0 :(得分:1)
问题在于mesh(X,Y,Z)
期望使用X
和Y
生成X = meshgrid(x)
和Y = meshgrid(y)
矩阵,其中x
和{ {1}}仅包含唯一的点。您的数据基本上已经定义了meshgrid,但很难将其删除。
我建议使用y
:
reshape
在这种情况下,假设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);
中有m
个唯一值,Y
中有n
个唯一值。您可能需要在调用网格时将这些转置为X
或类似的东西。