Интерполированные данные серфинга в Matlab

Возможный дубликат:
Как мне создать график прибоя в MATLAB с нерегулярно расположенными данными?

Имею такие данные:

data = [
x1 y1 z1
x2 y2 z2
...
xn yn zn
];

Мне нужно получить поверхность этих данных. Третий ряд, z - высота поверхности. Но X и Y не являются монотонными непрерывными данными, поэтому это не сработает:

[X Y] = meshgrid(data(:,1), data(:,2));
Z = interp2(data(:,1), data(:,2), data(:,3), X, Y);

потому что мои данные в первой и второй строке не монотонны.

Обновление:

TriScatteredInterp может это сделать. (Спасибо @Rody Oldenhuis)

F = TriScatteredInterp(data(:,1), data(:,2), data(:,3))
ti=1:10:600;
[qx qy] = meshgrid(ti, ti);
qz = F(qx, qy);
mesh(qx, qy, qz);

person Larry Cinnabar    schedule 30.10.2012    source источник


Ответы (1)


Я думаю, вы ищете TriScatteredInterp. Из документации:

F = TriScatteredInterp (X, V) создает интерполянт, который соответствует поверхности формы V = F (X) разбросанным данным в (X, V). X - это матрица размера mpts-by-ndim, где mpts - количество точек, а ndim - размер пространства, в котором находятся точки (ndim равно 2 или 3). Вектор-столбец V определяет значения в X, где длина V равна mpts.

F = TriScatteredInterp (X, Y, V) и F = TriScatteredInterp (X, Y, Z, V) позволяют указывать местоположения точек данных в альтернативном векторном формате столбца при работе в 2-D и 3-D режиме.

person Rody Oldenhuis    schedule 30.10.2012
comment
Ага, спасибо! TriScatteredInterp помог мне выполнить мою задачу - person Larry Cinnabar; 30.10.2012