MATLAB - Surf Plot数据结构

Tre*_*era 2 matlab plot

我用2种不同的方法进行了计算.对于那些计算,我有两个参数:x和y

最后,我计算了两种方法之间的%ERROR,用于每种变化.现在我想根据结果创建一个3D表面图:

x -> on x axis
y -> on y axis
Error -> on z axis
Run Code Online (Sandbox Code Playgroud)

以下是数据示例:

A = [
                   -0.1111                     1.267          9.45680081826912
                   -0.1111                       2.6          212.361735695025
                     -0.25                     1.533          40.5729362609655
                     -0.25                     2.867          601.253624894196
                   -0.4286                         1          0.12116749607863
                   -0.4286                       3.4          79.6948438921078
                   -0.6667                     2.067          33.3495544017519
                   -0.6667                     3.667          141.774875517481
                        -1                       2.6       -0.0399171449531781
                   0.09091                     1.533            163.7083541414 ];
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试用冲浪功能绘制它时:

x = A(:,1);
y = A(:,2);
z = A(:,3);

surf(x,y,z)
Run Code Online (Sandbox Code Playgroud)

,我收到一个错误:

Error using surf (line 75)
Z must be a matrix, not a scalar or vector
Error in ddd (line 27)
surf(x,y,z)
Run Code Online (Sandbox Code Playgroud)

你能帮我一个能够以冲浪功能可接受的格式重组数据的代码吗?

PS - 我正在尝试用我的第一次尝试编写一些示例代码.我一到某个地方就会发布它.

hba*_*rts 7

surf函数需要一个X,Y-values 网格作为输入.然而,您的数据只是三个向量,有一些组合,而不是一个完整的网格.如文档中所述,该meshgrid函数通常有助于创建此类网格矩阵.使用该unique函数选择和中的所有唯一值x,y并创建所有可能组合的矩阵:

[X,Y] = meshgrid(unique(x),unique(y));
Run Code Online (Sandbox Code Playgroud)

要创建Z适合[X,Y]网格的矩阵,该griddata函数很有用:

Z = griddata(x,y,z,X,Y);
Run Code Online (Sandbox Code Playgroud)

现在您可以surf使用网格矩阵作为输入调用:

surf(X,Y,Z);
Run Code Online (Sandbox Code Playgroud)