Сглаживание данных сверткой

Можно использовать свертку, чтобы сглаживать 2D данные, которые содержат высокочастотные компоненты.

Создайте 2D данные с помощью peaks и постройте график данных на различных уровнях контура.

Z = peaks(100);
levels = -7:1:10;
contour(Z,levels)

Figure contains an axes. The axes contains an object of type contour.

Впрысните в данные случайный шум и постройте график шумных контуров.

Znoise = Z + rand(100) - 0.5;
contour(Znoise,levels)

Figure contains an axes. The axes contains an object of type contour.

The conv2 функция в MATLAB ® свертывает 2D данные с заданным ядром, элементы которого определяют, как удалить или улучшить функции исходных данных. Ядра не должны быть такого же размера, как входные данные. Малогабаритных ядер может быть достаточно для сглаживания данных, содержащих всего несколько частотные составляющие. Более крупные ядра могут обеспечить большую точность настройки частотной характеристики, что приводит к более плавному выходу.

Задайте K ядра 3 на 3 и использовать conv2 сглаживать зашумленные данные в Znoise. Постройте графики сглаженных контуров. The 'same' опция в conv2 делает выход таким же размером как и вход.

K = (1/9)*ones(3);
Zsmooth1 = conv2(Znoise,K,'same');
contour(Zsmooth1, levels)

Figure contains an axes. The axes contains an object of type contour.

Сглаживайте зашумленные данные с помощью ядра 5 на 5 и стройте графики новых контуров.

K = (1/25)*ones(5);
Zsmooth2 = conv2(Znoise,K,'same');
contour(Zsmooth2,levels)

Figure contains an axes. The axes contains an object of type contour.

См. также

| | |

Похожие темы