dsp. MovingRMS

Перемещение среднеквадратичного значения

Описание

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

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

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

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

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

Создание

Синтаксис

movRMS = dsp.MovingRMS
movRMS = dsp.MovingRMS(Len)
movRMS = dsp.MovingRMS(Name,Value)

Описание

movRMS = dsp.MovingRMS возвращает движущийся объект RMS, movRMS, с помощью свойств по умолчанию.

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

пример

movRMS = dsp.MovingRMS(Name,Value) задает дополнительные свойства с помощью пар Name,Value. Незаданные свойства имеют значения по умолчанию.

Пример: movRMS = dsp.MovingRMS('Method','Exponential weighting','ForgettingFactor',0.9);

Свойства

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

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

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

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

Движущийся метод RMS, заданный как 'Sliding window' или 'Exponential weighting'.

  • 'Sliding window' — Окно длины, заданной SpecifyWindowLength, отодвинуто входные данные вдоль каждого канала. Для каждой выборки перемещения окна объект вычисляет RMS по данным в окне.

  • 'Exponential weighting' — Объект умножает квадраты выборок с набором взвешивания факторов. Значение факторов взвешивания уменьшается экспоненциально как возраст увеличений данных, никогда не достигая нуля. Чтобы вычислить RMS, алгоритм суммирует взвешенные данные и пускает квадратный корень из суммы.

Для получения дополнительной информации на этих методах, см. Алгоритмы.

Отметьте, чтобы задать длину окна, заданную как скалярная булевская переменная.

  • tRUE Длина раздвижного окна равна значению, которое вы задаете в свойстве WindowLength.

  • ложь Длина раздвижного окна бесконечна. В этом режиме RMS вычисляется с помощью текущей выборки и всех прошлых выборок.

Зависимости

Это свойство применяется, когда вы устанавливаете Method на 'Sliding window'.

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

Зависимости

Это свойство применяется, когда вы устанавливаете Method на 'Sliding window' и SpecifyWindowLength к true.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Экспоненциальный фактор взвешивания, заданный как положительный действительный скаляр в области значений (0,1].

Фактор упущения 0,9 дает больше веса более старым данным, чем делает фактор упущения 0,1. Фактор упущения 1,0 указывает на бесконечную память. Всем прошлым выборкам дают равный вес.

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

Настраиваемый: да

Зависимости

Это свойство применяется, когда вы устанавливаете Method на 'Exponential weighting'.

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

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

Синтаксис

y = movRMS(x)

Описание

пример

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

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

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

Ввод данных, заданный как вектор или матрица. Если x является матрицей, каждый столбец обработан как независимый канал. Движущаяся RMS вычисляется вдоль каждого канала. Объект также принимает входные параметры переменного размера. Если объект заблокирован, можно изменить размер каждого входного канала, но вы не можете изменить количество каналов.

Типы данных: single | double
Поддержка комплексного числа: Да

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

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

Движущаяся RMS входного сигнала, возвращенного как вектор или матрица.

Типы данных: single | double
Поддержка комплексного числа: Да

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

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

release(obj)

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

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

Примеры

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

Вычислите движущуюся RMS шумного сигнала прямоугольной волны с переменной амплитудой с помощью объекта dsp.MovingRMS.

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

Настройте объекты movrmsExp и movrmsWin. movrmsWin использует метод раздвижного окна с длиной окна 20. movrmsExp использует экспоненциальный метод взвешивания с фактором упущения 0,995. Создайте осциллограф времени для просмотра вывода.

FrameLength = 10;
Fs = 100;
movrmsWin = dsp.MovingRMS(20);
movrmsExp = dsp.MovingRMS('Method','Exponential weighting',...
    'ForgettingFactor',0.995);
scope  = dsp.TimeScope('SampleRate',Fs,...
    'TimeSpanOverrunAction','Scroll',...
    'TimeSpan',100,...
    'ShowGrid',true,...
    'YLimits',[-1.0 5.5]);
title = 'Sliding Window RMS (blue) and Exponentially Weighted RMS (red)';
scope.Title = title;

Вычислите RMS

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

count = 1;
Vect = [1/8 1/2 1 2 3 4];
for index = 1:length(Vect)
    V = Vect(index);
    for i = 1:160
        x = V + 0.1 * randn(FrameLength,1);
        y1 = movrmsWin(x);
        y2 = movrmsExp(x);
        scope([x,y1,y2]);
    end
end

Алгоритмы

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

Ссылки

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

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

Введенный в R2017b