2

我有一组数据,如下所示:

!Sr.#    x-coord.    y-coord     potential at (x,y)
  1       0.0000     1.0000      0.3508
  2       0.7071     0.7071      2.0806
  .       ....       ....        ....
  .       ....       ....        ....
 1000    0.0000     -1.0000      0.5688

我需要为上述数据生成一个 2D 轮廓,其中电位值将绘制在 2D 轮廓图上的相应 (x,y) 位置。我相信为了能够在 Matlab 中使用轮廓命令绘制 2D 轮廓,我将不得不使用 2D 矩阵(在我的情况下它基本上包含潜在值)。如何为这种情况创建 2D 矩阵?或者是否有一种解决方法可以完全避免 2D 矩阵并仍然给出 2D 轮廓。我拥有的 xy 坐标数据没有任何特定的顺序,但可以根据需要进行排列。

4

2 回答 2

2

我自己也遇到过这个问题,并且从 stackoverflow 成员John D'Errico那里找到了一个令人难以置信的解决方案,即木片。他在 Matlab Central 上调用的软件包gridfit,将轻松解决您的问题。这是我自己的示例,但 John 在他令人难以置信的文档和演示文件中有更好的示例。

% first, get some random x,y coordinates between -3 and 3
% to allow the peaks() function to look somewhat meaningful
x = rand(10,1)*6 - 3;
y = rand(10,1)*6 - 3;
% calculate the peaks function for this points
z = peaks(x,y);
% now, decide the grid we want to see, -3 to 3 at 0.1 intervals
% will be fine for this crude test
xnodes = -3:0.1:3;
ynodes = -3:0.1:3;
% now, all gridfit, notice, no sorting!  no nothing!
% just tell it the rectangular grid you want, and give it
% the raw data.  It will use linear algebra and other robust
% techniques to fit the function to the grid points
[zg,xg,yg] = gridfit(x,y,z,xnodes,ynodes);
% finally, plot the data, Viola!
contour(xg,yg,zg)
于 2013-02-19T23:04:31.393 回答
1

对于任意分散的数据,请查看TriScatteredInterp作为 gridfit 的替代方案。

于 2013-09-27T19:50:01.897 回答