Статистика измерений потоковых сигналов

Статистика движения Системных объектов измерить статистику потоковых сигналов в MATLAB®. Можно также использовать такие функции, как movmean, movmedian, movstd, и movvar для измерения статистики движения. Эти функции более подходят для одноразовых расчетов на данных, которые доступны в пакете. В отличие от Системных объектов, функции не предназначены для обработки больших потоков данных.

Вычисление скользящего среднего значения с использованием только функций MATLAB

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

The movmean функция вычисляет 10-точечное скользящее среднее значение зашумленных данных, поступающих от акселерометра. Три столбца этих данных представляют линейное ускорение акселерометра в осях X, Y и Z, соответственно. Все данные доступны в файле MAT. Постройте график скользящего среднего значения данных по оси X.

winLen = 10;
accel = load('LSM9DS1accelData73.mat');
movAvg = movmean(accel.data,winLen,'Endpoints','fill');
plot([accel.data(:,1),movAvg(:,1)]);
legend('Input','Moving average along X data');

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Input, Moving average along X data.

Данные не очень большие (7140 выборки в каждом столбце) и полностью доступны для обработки. The movmean функция предназначена для обработки таких одноразовых расчетов. Однако, если данные очень большие, например, в порядке ГБ, или если данные являются живым потоком, который необходимо обработать в реальном времени, используйте системные объекты. Системные объекты делят данные на сегменты, называемые системами координат, и обрабатывают каждую систему координат в цикле итерации без проблем. Этот подход эффективен с точки зрения памяти, потому что в любой момент времени обрабатывается только одна система координат данных. Кроме того, системные объекты оптимизированы для обработки состояний внутри системы.

Вычисление скользящего среднего значения с использованием системных объектов

Создайте dsp.MovingAverage Системный объект для вычисления 10-точечного скользящего среднего значения потокового сигнала. Использование dsp.MatFileReader Системный объект для чтения данных с акселерометра MAT файла. Просмотр выхода скользящего среднего значения во временных возможностях.

Системные объекты автоматически индексируют данные в системы координат. Выберите формат кадра 714 выборок. В каждом столбце систем координат MAT 7140 выборок или 10 файлов данных. Каждый цикл итерации вычисляет скользящее среднее значение 1 система координат данных.

frameSize = 714;
reader = dsp.MatFileReader('SamplesPerFrame',frameSize,...
    'Filename','LSM9DS1accelData73.mat','VariableName','data');
movAvg = dsp.MovingAverage(10);
scope = timescope('NumInputPorts',2,'SampleRate',119,...
    'YLimits',[-2500 2500],...
    'TimeSpanSource','property','TimeSpan',60,...
    'ChannelNames',{'Input','Moving Average along X data'},...
    'ShowLegend',true);

while ~isDone(reader)
    accel = reader();
    avgData = movAvg(accel);
    scope(accel(:,1),avgData(:,1));
end

Цикл обработки очень прост. Системные объекты обрабатывают индексацию данных и состояния автоматически.

Похожие темы