1

我有一个包含 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));  

我遇到的问题是,我总是收到错误:

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

它适用于 function plot3(),但我想要一种网格状的情节。

4

1 回答 1

1

问题是mesh(X,Y,Z)期望您的矩阵XY矩阵是使用X = meshgrid(x)Y = meshgrid(y)在哪里生成的,x并且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,并且在 中具有唯一nX。您可能必须在调用网格时将这些转换为mesh(X',Y',Z)或类似的东西。

于 2013-06-09T17:48:02.677 回答