exponenta event banner

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

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

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

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

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 образцов в каждом столбце) и полностью доступны для обработки. movmean функция предназначена для обработки таких разовых вычислений. Однако если данные очень большие, например, в порядке ГБ, или если данные представляют собой прямой поток, который должен обрабатываться в реальном времени, то используйте системные объекты. Объекты System делят данные на сегменты, называемые кадрами, и обрабатывают каждый кадр в цикле итерации. Этот подход эффективен для памяти, поскольку в любой момент времени обрабатывается только один кадр данных. Кроме того, системные объекты оптимизированы для внутренней обработки состояний.

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

Создать 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

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

Связанные темы