Можно использовать свертку, чтобы сглаживать 2D данные, который содержит высокочастотные компоненты.
Создайте 2D данные с помощью peaks
функция, и отображает данные на графике на различных уровнях контура.
Z = peaks(100); levels = -7:1:10; contour(Z,levels)
Введите случайный шум в данные и постройте шумные контуры.
Znoise = Z + rand(100) - 0.5; contour(Znoise,levels)
conv2
функция в MATLAB® производит свертку 2D данных с заданным ядром, элементы которого задают, как удалить или улучшить функции исходных данных. Ядра не должны быть одного размера с входными данными. Ядра маленького размера могут быть достаточными, чтобы сглаживать данные, содержащие только несколько частотных составляющих. Ядра большего размера могут обеспечить больше точности для настройки частотной характеристики, приводящей к более сглаженному выходу.
Задайте 3х3 ядро K
и используйте conv2
сглаживать зашумленные данные в Znoise
. Постройте сглаженные контуры. 'same'
опция в conv2
делает выход тем же размером как вход.
K = 0.125*ones(3);
Zsmooth1 = conv2(Znoise,K,'same');
contour(Zsmooth1, levels)
Сглаживайте зашумленные данные с ядром 5 на 5 и постройте новые контуры.
K = 0.045*ones(5);
Zsmooth2 = conv2(Znoise,K,'same');
contour(Zsmooth2,levels)
conv
| conv2
| filter
| smoothdata