medfilt1

1D средняя фильтрация

Синтаксис

y = medfilt1(x)
y = medfilt1(x,n)
y = medfilt1(x,n,blksz,dim)
y = medfilt1(x,n,[],dim)
y = medfilt1(___,nanflag,padding)

Описание

y = medfilt1(x) применяет третий порядок одномерный средний фильтр к входному вектору, x. Функция рассматривает сигнал быть 0 вне конечных точек. Вывод, y, имеет ту же длину как x.

пример

y = medfilt1(x,n) применяет th-порядок n одномерный средний фильтр к x.

y = medfilt1(x,n,blksz,dim) или y = medfilt1(x,n,[],dim) задает размерность, dim, вдоль которого действует фильтр. blksz требуется для обратной совместимости и проигнорирован.

пример

y = medfilt1(___,nanflag,padding) задает, как значения NaN обработаны по каждому сегменту, с помощью любых входных параметров от предыдущих синтаксисов. Этот синтаксис также задает padding, тип фильтрации выполняемого в ребрах сигнала.

nanflag и padding могут появиться где угодно после x в вызове функции.

Примеры

свернуть все

Сгенерируйте синусоидальный сигнал, выбранный в течение 1 секунды на уровне 100 Гц. Добавьте синусоиду более высокой частоты, чтобы моделировать шум.

fs = 100;
t = 0:1/fs:1;
x = sin(2*pi*t*3)+0.25*sin(2*pi*t*40);

Используйте фильтр медианы 10-го порядка, чтобы сглаживать сигнал. Постройте результат.

y = medfilt1(x,10);

plot(t,x,t,y)
legend('Original','Filtered')
legend('boxoff')

Сгенерируйте двухканальный сигнал, состоящий из синусоид различных частот. Поместите скачки в случайные места. Используйте NaNs, чтобы добавить недостающие выборки наугад. Сбросьте генератор случайных чисел для восстанавливаемых результатов. Постройте сигнал.

rng('default')

n = 59;
x = sin(pi./[15 10]'*(1:n)+pi/3)';

spk = randi(2*n,9,1);
x(spk) = x(spk)*2;
x(randi(2*n,6,1)) = NaN;

plot(x)

Отфильтруйте сигнал с помощью medfilt1 с настройками по умолчанию. Постройте отфильтрованный сигнал. По умолчанию фильтр присваивает NaN медиане любого сегмента с недостающими выборками.

y = medfilt1(x);
plot(y)

Транспонируйте исходный сигнал. Отфильтруйте его снова, указав что функциональная работа вдоль строк. Исключите недостающие выборки при вычислении медиан. Если вы оставляете второй аргумент пустым, то medfilt1 использует порядок фильтра по умолчанию 3.

y = medfilt1(x',[],[],2,'omitnan');
plot(y')

Функция не может присвоить значение сегменту, который содержит только NaNs. Увеличьте длину сегмента, чтобы устранить эту проблему. Изменение также удаляет выброс более тщательно.

y = medfilt1(x,4,'omitnan');
plot(y)

Нулевое дополнение по умолчанию приводит к недооцениванию функции значения сигналов в ребрах. Уменьшите этот эффект при помощи уменьшающихся окон, чтобы вычислить медианы в концах.

y = medfilt1(x,4,'omitnan','truncate');
plot(y)

Входные параметры

свернуть все

Входной сигнал, заданный как вектор с действительным знаком, матрица или массив N-D.

Типы данных: single | double

Порядок одномерного среднего фильтра, заданного как положительный целочисленный скаляр.

  • Когда n нечетен, y(k) является медианой x(k-(n-1)/2:k+(n-1)/2).

  • Когда n даже, y(k) является медианой x(k-n/2:k+(n/2)-1). В этом случае medfilt1 сортирует числа и берет среднее значение двух средних элементов отсортированного списка.

Пример: Если n = 11, то y(k) является медианой x(k-5:k+5).

Пример: Если n = 12, то y(k) является медианой x(k-6:k+5).

Типы данных: double

Размерность, чтобы отфильтровать вперед, заданный как положительный целочисленный скаляр. По умолчанию medfilt1 действует по первому неодноэлементному измерению x. В частности, если x является матрицей, функция фильтрует свои столбцы так, чтобы y(:,i) = medfilt1(x(:,i),n).

Типы данных: double

Условие NaN, заданное как 'includenan' или 'omitnan'.

  • 'includenan' — Возвращает отфильтрованный сигнал так, чтобы медианой любого сегмента, содержащего NaN s, был также NaN.

  • 'omitnan' — Возвращает отфильтрованный сигнал так, чтобы медиана любого сегмента, содержащего NaN s, была медианой non-NaN значений. Если всеми элементами сегмента является NaN s, результатом является NaN.

Фильтрация конечной точки, заданная как 'zeropad' или 'truncate'.

  • 'zeropad' — Рассматривает сигнал быть нулем вне конечных точек.

  • 'truncate' — Вычисляет медианы меньших сегментов, когда это достигает ребер сигнала.

Выходные аргументы

свернуть все

Фильтрованный сигнал, возвращенный как вектор с действительным знаком, матрица или массив N-D. y одного размера как x

Типы данных: double

Советы

Если у вас есть лицензия на программное обеспечение Image Processing Toolbox™, можно использовать функцию medfilt2, чтобы выполнить двумерную среднюю фильтрацию.

Ссылки

[1] Пратт, цифровая обработка изображений Уильяма К. 4-й Эд. Хобокен, NJ: John Wiley & Sons, 2007.

Смотрите также

| | | |

Представлено до R2006a