У меня есть файл данных с 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 ============
Во многих случаях простым решением является использование 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)
Вы можете заполнить отсутствующие значения детерминистически, просто небольшой скрипт с двумя вложенными циклами для x и y.
x
y
В противном случае снова посмотрите на функцию meshgrid в документации MATLAB. Там вы видите See Also раздел. Не случайно здесь есть функция griddata . Это то, что вам нужно! Я также могу порекомендовать gridfit , что еще лучше.
See Also
Вы можете подогнать поверхность через точки, которые у вас есть, а затем построить график поверхности. Мне нравится использовать функцию x2fx для генерации полной квадратичной модели, а затем использовать оператор \ для подгонки данных к модели. Есть ли у вас какие-либо представления о глубинной природе поверхности, которую вы пытаетесь изобразить? В ваших данных много шума? Это 8.0 выглядит немного неуместно, это выброс или это правильные данные?