Движущиеся Системные объекты статистики измеряют статистику потоковой передачи сигналов в MATLAB®. Можно также использовать функции, такие как movmean
, movmedian
, movstd
и movvar
, чтобы измерить движущуюся статистику. Эти функции более подходят для одноразовых вычислений на данных, которые доступны в пакете. В отличие от Системных объектов, функции не разработаны, чтобы обработать большие потоки данных.
Этот пример показывает, как вычислить скользящее среднее значение сигнала с помощью функции 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');
Данные не являются очень большими (7 140 выборок в каждом столбце) и являются совершенно доступными для обработки. Функция movmean
разработана, чтобы обработать такие одноразовые вычисления. Однако, если данные являются очень большими, такой как в порядке Гбайт, или если данные являются прямой трансляцией, которая должна быть обработана в режиме реального времени, затем использовать Системные объекты. Системные объекты делятся, данные в сегменты вызвали кадры, и обработайте каждый кадр в цикле итерации беспрепятственно. Этот подход является эффективной памятью, потому что только один кадр данных обрабатывается в любой момент времени. Кроме того, Системные объекты оптимизированы, чтобы обработать состояния внутренне.
Создать Системный объект dsp.MovingAverage
? вычислить скользящее среднее значение с 10 точками сигнала потоковой передачи. Используйте Системный объект dsp.MatFileReader
, чтобы считать данные из файла MAT акселерометра. Просмотрите скользящее среднее значение вывод в осциллографе времени.
Системные объекты автоматически индексируют данные в кадры. Выберите формат кадра 714 выборок. Существует 7 140 выборок или 10 кадров данных в каждом столбце файла MAT. Каждый цикл итерации вычисляет скользящее среднее значение 1 кадра данных.
frameSize = 714; reader = dsp.MatFileReader('SamplesPerFrame',frameSize,... 'Filename','LSM9DS1accelData73.mat','VariableName','data'); movAvg = dsp.MovingAverage(10); scope = dsp.TimeScope('NumInputPorts',2,'SampleRate',119,'YLimits',[-2500 2500],... 'ChannelNames',{'Input','Moving Average along X data'},'TimeSpan',60,'ShowLegend',true); while ~isDone(reader) accel = reader(); avgData = movAvg(accel); scope(accel(:,1),avgData(:,1)); end
Цикл обработки очень прост. Системные объекты обрабатывают индексацию данных и состояния автоматически.