我有一个2维输入数据; 一组带有2个分量的向量,比方说200分.对于每一个我都有一个标量值给它们.
所以它基本上是这样的:
{ [input1(i) input2(i)] , output(i) } where i goes from 1 to 200
Run Code Online (Sandbox Code Playgroud)
我想用这些数据制作一个三维图,但我不知道究竟是多少.我试过了surf.我已经meshgrid用输入值做了一个,但我不知道如何从输出数据中获取矩阵才能做到surf.
如何获得包含此数据的3维图?
假设您的输入数据是"随机"间隔的:
>> inputs = randn(400, 2);
>> outputs = inputs(:, 1) .* inputs(:, 2); % some function for the output
Run Code Online (Sandbox Code Playgroud)
您可以简单地绘制这些数据的散点图:
>> scatter3(inputs(:, 1), inputs(:, 2), outputs)
Run Code Online (Sandbox Code Playgroud)

但更好的方法是使用TriScatteredInterp进行插值,以便将底层函数绘制为曲面:
% create suitably spaced mesh...
gridsteps_x = min(inputs(:, 1)):0.5:max(inputs(:, 1));
gridsteps_y = min(inputs(:, 2)):0.5:max(inputs(:, 2));
[X, Y] = meshgrid(gridsteps_x, gridsteps_y);
% Compute function to perform interpolation:
F = TriScatteredInterp(inputs(:, 1), inputs(:, 2), outputs);
% Calculate Z values using function F:
Z = F(X, Y);
% Now plot this, with original data:
mesh(X, Y, Z);
hold on
scatter3(inputs(:, 1), inputs(:, 2), outputs);
hold off
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
2063 次 |
| 最近记录: |