简体   繁体   中英

How to plot input and output data in MATLAB

I have a 2 Dimensional input data; a set of vector with 2 components, let's say 200. And for each one of those I have a scalar value given to them.

So it's basically something like this:

{ [input1(i) input2(i)] , output(i) } where i goes from 1 to 200

I would like to make a 3 Dimensional plot with this data, but I don't know how exactly. I have tried with surf . I have done a meshgrid with the input value, but I don't know how to obtain a matrix out of the output data in order to do a surf .

How can I get a 3 Dimensional plot with this data?

Assuming your input data is 'randomly' spaced:

>> inputs = randn(400, 2);
>> outputs = inputs(:, 1) .* inputs(:, 2);   % some function for the output

You could simply plot a scatter3 plot of these data:

>> scatter3(inputs(:, 1), inputs(:, 2), outputs)

替代文字

But a better way is to interpolate, using TriScatteredInterp so you can plot the underlying function as a surface:

% 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

替代文字

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM