Как построить входные и выходные данные в MATLAB - PullRequest
2 голосов
/ 05 ноября 2010

У меня есть 2-мерные входные данные;набор вектора с 2 компонентами, скажем, 200. И для каждого из них мне дано скалярное значение.

Так что это в основном что-то вроде этого:

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

Я хотел бы сделать трехмерный график с этими данными, но я не знаю, как именно.Я пытался с surf.Я сделал meshgrid с входным значением, но я не знаю, как получить матрицу из выходных данных, чтобы сделать surf.

Как я могу получить 3-мерныйучасток с этими данными?

1 Ответ

5 голосов
/ 05 ноября 2010

Предполагая, что ваши входные данные расположены "случайно":

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

Вы могли бы просто построить scatter3 график этих данных:

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

alt text

Но лучший способ - это интерполировать, используя 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

alt text

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...