Относительные качественные характеристики всех перечисленных методов сохраняются и в случае двух- или многомерной интерполяции.
Приведенный ниже пример сравнивает методы двумерной интерполяции в случае матрицы данных размера 7х7.
1. Сформируем функцию peaks на «грубой» сетке (с единичным шагом).
[x, y] = meshgrid(-3 : 1 : 3);
z = peaks(x,y);
surf(x,y,z)
где функция meshgrid(-3:1:3) задает сетку на плоскости x и y в виде двумерных массивов размера 7х7; функция peaks(x,y) является двумерной функцией, используемой в MATLAB-е в качестве стандартных примеров, а surf(x,y,z) строит окрашенную параметрическую повер-хность. Соответствующий график показан ниже.
2. Создадим теперь более мелкую сетку для интерполяции (с шагом 0.25).
[xi,yi] = meshgrid(-3:0.25:3);
3. Осуществим интерполяция перечисленными выше методами.
zi1 = interp2(x,y,z,xi,yi,'nearest');
zi2 = interp2(x,y,z,xi,yi,'bilinear');
zi3 = interp2(x,y,z,xi,yi,'bicubic');
Сравним графики поверхностей для различных методов интерполяции.
surf(xi,yi,zi1) surf(xi,yi,zi2) surf(xi,yi,zi3)
Метод `nearest' Метод `bilinear' Метод `bicubic'
Интересно также сравнить линии уровней данных поверхностей, построенных при помощи специальной функции contour.
contour(xi,yi,zi1) contour(xi,yi,zi2) contour(xi,yi,zi3)
Отметим, что бикубический метод производит обычно более гладкие контуры. Это, однако, не всегда является основной заботой. Для некоторых приложений, таких, например, как об-работка изображений в медицине, метод типа ступенчатой интерполяции может быть более предпочтительным, так как он не «производит» никаких «новых» результатов наблюдений.
mx =
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33