Человек записал свой вес в фунтах во время високосного 2012 года. Человек записывал свой вес не каждый день, поэтому данные неоднородны. Используйте приложение Signal Analyzer для предварительной обработки и изучения зарегистрированного веса. Приложение позволяет заполнить недостающие точки данных путем интерполяции сигнала в однородную сетку. (Эта процедура дает наилучшие результаты, если сигнал имеет только небольшие промежутки.)
Загрузите данные и преобразуйте измерения в килограммы. Файл данных имеет отсутствующие показания, установленные как NaN. Недостает 27 точек данных, большинство из них во время двухнедельного отрезка в августе.
wt = datetime(2012,1,1:366)';
load weight2012.dat
wgt = weight2012(:,2)/2.20462;
validpoints = ~isnan(wgt);
missing = wt(~validpoints);
missing(15:26)ans = 12x1 datetime
09-Aug-2012
10-Aug-2012
11-Aug-2012
12-Aug-2012
15-Aug-2012
16-Aug-2012
17-Aug-2012
18-Aug-2012
19-Aug-2012
20-Aug-2012
22-Aug-2012
23-Aug-2012
Сохраните данные в расписании MATLAB ®. Удалите недостающие точки. Снимите значение постоянного тока, чтобы сконцентрироваться на колебаниях. Преобразование информации о времени в duration путем вычитания первой временной точки. Дополнительные сведения см. в разделе Типы данных, поддерживаемые анализатором сигналов.
wgt = wgt(validpoints); wgt = wgt - mean(wgt); wt = wt(validpoints); wt = wt - wt(1); wg = timetable(wt,wgt);
Откройте анализатор сигналов и перетащите расписание на дисплей. На вкладке Отображение (Display) щелкните Спектр (Spectrum), чтобы открыть вид спектра. На вкладке Время выберите Показать маркеры. Увеличьте изображение отсутствующего растяжения, установив для параметра «Временные ограничения» значения 200 и 250 дней.

Щелкните правой кнопкой мыши сигнал в таблице Сигнал (Signal) и выберите Duplicate. Переименовать копию как Preprocessed дважды щелкните столбец Имя (Name) в таблице Сигнал (Signal). Оставить Preprocessed сигнал выбран. На вкладке Analyzer (Анализатор) щелкните Preprocessing (Предварительная обработка) ▼ а затем выберите Resample (Повторная выборка). На появившейся вкладке Resample введите частоту выборки, равную 1 cycles/day и выберите Shape Preserving Cubic способ. Щелкните Ресампл (Resample). Наложите повторно дискретизированный сигнал на дисплей, установив флажок рядом с его именем.

Уменьшите изображение, чтобы показать данные за весь год. На вкладке Спектр (Spectrum) установите максимальное значение утечки. Спектры исходных и повторно дискретизированных сигналов хорошо согласуются для большинства частот. Спектр показывает два заметных пика, один на уровне около 0,14 циклов/день, а другой на очень низких частотах. Чтобы лучше найти пики, щелкните Курсоры данных (Data Cursors) ▼ а затем выберите Two. Поместите курсоры на вершины. Наведите курсор на поле частоты каждого курсора, чтобы получить более точное значение его местоположения.
Пик средней частоты составляет 0,142857 = 1/7 циклов/день, что соответствует недельному циклу.
Низкочастотный пик составляет 0,004762 циклов/день, что соответствует 210-дневному циклу.

Удалите курсоры, щелкнув значок «Курсоры данных». Удалите исходный сигнал с дисплея. Фильтрация Preprocessed сигнал для устранения эффектов циклов.
Для удаления низкочастотного цикла выполните фильтрацию сигнала. На вкладке Analyzer выберите Highpass. На появившейся вкладке Highpass введите частоту полосы пропускания 0.05 cycles/day. Используйте значения по умолчанию для других параметров. Щелкните Верхний проход (Highpass).
Для удаления недельного цикла выполните полосовую фильтрацию сигнала. На вкладке Analyzer (Анализатор) щелкните Preprocessing ▼ (Предварительная обработка) и выберите Bandstop (Полоса пропускания). На вкладке Bandstop, которая заменяет вкладку Highpass, введите более низкую частоту полосы пропускания 0.135 cycles/day и более высокая частота полосы пропускания 0.15 cycles/day. Используйте значения по умолчанию для других параметров. Щелкните Bandstop.

Предварительно обработанный сигнал показывает меньшую флуктуацию, чем исходный. Форма сигнала предполагает, что вес человека меняется меньше в летние месяцы, чем зимой, но это может быть артефактом повторной выборки. Щелкните значок в столбце Info в записи таблицы Signal для Preprocessed сигнал для просмотра выполненных над ним шагов предварительной обработки.

Чтобы просмотреть полную сводку шагов предварительной обработки, включая все выбранные настройки, щелкните Создать функцию (Generate Function) на вкладке Анализатор (Analyzer). Созданная функция появится в редакторе MATLAB ®.
function [y,ty] = preprocess(x,tx) % Preprocess input x % This function expects an input vector x and a vector of time values % tx. tx is a numeric vector in units of seconds. % Follow the timetable documentation (type 'doc timetable' in % command line) to learn how to index into a table variable and its time % values so that you can pass them into this function. % Generated by MATLAB(R) 9.5 and Signal Processing Toolbox 8.1. % Generated on: 08-Jun-2018 14:35:38 targetSampleRate = 1.1574074074074073e-05; [y,ty] = resample(x,tx,targetSampleRate,'pchip'); Fs = 1/mean(diff(ty)); % Average sample rate y = highpass(y,5.787e-07,Fs,'Steepness',0.85,'StopbandAttenuation',60); y = bandstop(y,[1.5625e-06 1.73611111111111e-06],Fs,'Steepness',0.85,'StopbandAttenuation',60); end