Как построить трехмерную поверхность из файла данных в Matlab - PullRequest
6 голосов
/ 23 декабря 2010

У меня есть файл данных с 3 столбцами, x, y, z и я хотел бы сделать 3D-график для визуализации поверхности.

Я мог бы использовать meshgrid, но проблема в том, что у меня есть данные только для тех y, которые y <= x Есть ли способ сделать это? </p>

Пример:

x    y    z
============
1    1    0.5
2    1    0.3
2    2    1.2
3    1    1.1
3    2    8.0
3    3    1.4
============

Ответы [ 3 ]

7 голосов
/ 23 декабря 2010

Во многих случаях простым решением является использование trisurf.Например ...

x = [1, 2, 2, 3, 3, 3];
y = [1, 1, 2, 1, 2, 3];
z = [0.5, 0.3, 1.2, 1.1, 1.8, 1.4];

tri = delaunay(x,y);
trisurf(tri,x,y,z)

alt text

5 голосов
/ 23 декабря 2010

Вы можете заполнить отсутствующие значения детерминистически, просто небольшой скрипт с двумя вложенными циклами для x и y.

В противном случае снова посмотрите на функцию meshgrid в документации MATLAB. Там вы видите See Also раздел. Не случайно здесь есть функция griddata . Это то, что вам нужно! Я также могу порекомендовать gridfit , что еще лучше.

0 голосов
/ 23 декабря 2010

Вы можете подогнать поверхность через точки, которые у вас есть, а затем построить график поверхности. Мне нравится использовать функцию x2fx для генерации полной квадратичной модели, а затем использовать оператор \ для подгонки данных к модели. Есть ли у вас какие-либо представления о глубинной природе поверхности, которую вы пытаетесь изобразить? В ваших данных много шума? Это 8.0 выглядит немного неуместно, это выброс или это правильные данные?

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