dsp. MedianFilter

Описание

Система dsp.MedianFilter object™ вычисляет движущуюся медиану входного сигнала вдоль каждого канала независимо в зависимости от времени. Объект использует метод раздвижного окна, чтобы вычислить движущуюся медиану. В этом методе окно заданной длины отодвинуто каждый канал, выборка выборкой, и объект вычисляет медиану данных в окне. Для получения дополнительной информации см. Алгоритмы.

Вычислить движущуюся медиану входа:

  1. Создайте объект dsp.MedianFilter и установите его свойства.

  2. Вызовите объект с аргументами, как будто это была функция.

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

medFilt = dsp.MedianFilter
medFilt = dsp.MedianFilter(Len)
medFilt = dsp.MedianFilter(Name,Value)

Описание

medFilt = dsp.MedianFilter возвращает средний объект фильтра, medFilt, с помощью свойств по умолчанию.

пример

medFilt = dsp.MedianFilter(Len) устанавливает свойство WindowLength на Len.

medFilt = dsp.MedianFilter(Name,Value) задает свойство WindowLength с помощью пары Name,Value.

Пример:

movMin = dsp.MedianFilter('WindowLength',5);

Свойства

развернуть все

Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и функция release разблокировала их.

Если свойство является настраиваемым, можно изменить его значение в любое время.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).

Длина раздвижного окна, заданного как положительное скалярное целое число.

Использование

Синтаксис

y = medFilt(x)

Описание

пример

y = medFilt(x) вычисляет движущуюся медиану входного сигнала, x, с помощью метода раздвижного окна.

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

развернуть все

Ввод данных, заданный как вектор или матрица. Если x является матрицей, каждый столбец обработан как независимый канал. Движущаяся медиана вычисляется вдоль каждого канала. Объект принимает многоканальные входные параметры, то есть, m-by-n входные параметры размера, где m ≥ 1, и n> 1. m является количеством выборок в каждом кадре (или канал), и n является количеством каналов.

Объект также принимает входные параметры переменного размера. Если объект заблокирован, можно изменить размер каждого входного канала, но вы не можете изменить количество каналов.

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

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

развернуть все

Фильтрованный сигнал, возвращенный как вектор или матрица. Размер и тип данных вывода совпадают с размером и типом данных входа.

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

Функции объекта

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:

release(obj)

развернуть все

stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

развернуть все

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

Инициализация

Настройте объект dsp.MedianFilter, medFilt, и объект dsp.MovingAverage, movavgWin. Эти объекты используют метод раздвижного окна с длиной окна 7. Создайте осциллограф времени для просмотра вывода.

Fs = 1000;
medFilt = dsp.MedianFilter(7);
movavgWin = dsp.MovingAverage(7);
scope  = dsp.TimeScope('SampleRate',Fs,...
    'TimeSpanOverrunAction','Scroll',...
    'TimeSpan',1,'ShowGrid',true,...
    'YLimits',[-3 3],...
    'LayoutDimensions',[3 1],...
    'NumInputPorts',3);
scope.ActiveDisplay = 1;
scope.Title = 'Signal + Noise';
scope.ActiveDisplay = 2;
scope.Title = 'Moving Average Output (Window Length = 7)';
scope.ActiveDisplay = 3;
scope.Title = 'Median Filter Output (Window Length = 7)';

FrameLength = 256;
count = 1;
sine = dsp.SineWave('SampleRate',Fs,'Frequency',10,...
    'SamplesPerFrame',FrameLength);

Отфильтруйте шумную синусоиду

Сгенерируйте шумный синусоидальный сигнал с частотой 10 Гц. Примените средний фильтр и объект скользящего среднего значения к сигналу. Просмотрите вывод на осциллографе времени.

for i = 1:500
    hfn = 3 * (rand(FrameLength,1) < 0.02);
    x = sine() + 1e-2 * randn(FrameLength,1) + hfn;
    y1 = movavgWin(x);
    y2 = medFilt(x);
    scope(x,y1,y2);
end

Средний фильтр удаляет высокочастотный шум эффективнее, чем объект скользящего среднего значения.

Этот пример показывает, как удалить высокочастотные выбросы из сигнала потоковой передачи использование Системного объекта dsp.MedianFilter?.

Используйте Системный объект dsp.MatFileReader, чтобы считать файл MAT гироскопа. Файл MAT гироскопа содержит 3 столбца данных с каждым столбцом, содержащим 7 140 выборок. Эти три столбца представляют Ось X, Ось Y и данные оси Z из датчика движения гироскопа. Выберите формат кадра 714 выборок так, чтобы каждый столбец данных содержал 10 кадров. Системный объект dsp.MedianFilter использует длину окна 10. Создайте объект dsp.TimeScope просмотреть отфильтрованный вывод.

reader = dsp.MatFileReader('SamplesPerFrame',714,'Filename','LSM9DS1gyroData73.mat',...
    'VariableName','data');
medFilt = dsp.MedianFilter(10);
scope = dsp.TimeScope('NumInputPorts',1,'SampleRate',119,'YLimits',[-300 300],...
    'ChannelNames',{'Input','Filtered Output'},'TimeSpan',60,'ShowLegend',true);

Отфильтруйте данные о гироскопе с помощью Системного объекта dsp.MedianFilter. Просмотрите отфильтрованные данные оси Z в осциллографе времени.

for i = 1:10
    gyroData = reader();
    filteredData = medFilt(gyroData);
    scope([gyroData(:,3),filteredData(:,3)]);
end

Исходные данные содержат несколько выбросов. Увеличьте масштаб данных, чтобы подтвердить, что средний фильтр удаляет все выбросы.

Алгоритмы

развернуть все

Ссылки

[1] Боденхэм, декан. “Адаптивное обнаружение фильтрации и изменения для потоковой передачи данных”. PH.D. Тезис. Имперский колледж, Лондон, 2012.

Расширенные возможности

Введенный в R2017b