В этом примере показано, как использовать функции midcross
и dtw
извлекать функции из данных сигнала походки. Сигналы походки используются, чтобы изучить шаблоны обхода пациентов с нейродегенеративным заболеванием. Время между шагами, как сообщали, отличалось между здоровыми и больными индивидуумами. midcross
предлагает удобный способ вычислить эти времена. Люди также изменяют свою скорость обхода в зависимости от времени. dtw
обеспечивает удобный способ количественно сравнить форму сигналов походки путем деформирования, чтобы выровнять их вовремя. Этот пример использует midcross
определять местоположение каждого шага в сигнале походки и dtw
чтобы вычислить расстояния между походкой сигнализируют о сегментах. Эти результаты исследованы, когда потенциал показывает для классификации сигнала. В то время как этот пример характерен для сигналов походки, других физиологических сигналов, таков как электрокардиограмма (ECG) или фотоплетизмограмма (PPG), может также анализироваться с помощью этих функций.
Анализируемый набор данных содержит данные о силе, собранные во время обхода для пациентов с Амиотрофическим боковым склерозом (ALS) и контрольной группой. ALS является болезнью, сделанной известной Лу Геригом, Стивеном Хокингом и 2 014 'Ice Bucket Challenge'.
Загрузите и постройте первые 30 секунд данных сигнала походки для одного пациента.
helperGaitPlot('als1m');
xlim([0 30])
Этот набор данных представляет силу, порожденную ногой на силу чувствительный резистор. Сила измеряется в милливольтах. Каждая запись является одной минутой в длине и содержит отдельные каналы для левой и правой ноги предмета. Каждый шаг в наборе данных характеризуется резким изменением в силе, когда нога влияет и отрывается от земли. Используйте midcross
найти эти резкие изменения для пациента ALS.
Используйте midcross
найти и построить местоположение каждого пересечения для левой ноги пациента ALS. Выбрал допуск 25%, чтобы гарантировать, что каждое пересечение обнаруживается.
Fs = 300; gaitSignal = helperGaitImport('als1m'); midcross(gaitSignal(1,:),Fs,'tolerance',25); xlim([0 30]) xlabel('Sample Number') ylabel('mV')
midcross
правильно идентифицирует пересечения. Теперь используйте его, чтобы вычислить времена межшага для группы из десяти пациентов. Пять пациентов являются контрольными объектами, и у пяти пациентов есть ALS. Используйте запись левой ноги для каждого пациента и исключите первые восемь пересечений, чтобы удалить переходные процессы.
pnames = helperGaitImport(); for i = 1:10 gaitSignal = helperGaitImport(pnames{i}); IND2 = midcross(gaitSignal(1,:),Fs,'Tolerance',25); IST{i} = diff(IND2(9:2:end)); varIST(i) = var(IST{i}); end
Постройте времена межшага.
figure hold on for i = 1:5 plot(1:length(IST{i}),IST{i},'.-r') plot(1:length(IST{i+5}),IST{i+5},'.-b') end xlabel('Stride Number') ylabel('Time Between Strides (sec)') legend('ALS','Control')
Отклонение времен межшага выше в целом для пациентов ALS.
Определив количество расстояния между шагами, продолжите анализировать форму данных сигнала походки, независимых от этих изменений межшага. Сравните два сегмента сигнала с помощью dtw
. Идеально, можно было бы выдержать сравнение, форма походки сигнализируют в зависимости от времени как прогресс болезни или обработка. Здесь, мы сравниваем два сегмента той же записи, один сегмент, взятый рано в записи (sigsInitialLeft
), и второе к концу (sigsFinalLeft
). Каждый сегмент содержит шесть шагов.
Загрузите сегменты данных сигнала походки.
load PNGaitSegments.mat
Пациент не идет на том же уровне в записи. dtw
обеспечивает меру расстояния между сегментами путем деформирования их, чтобы выровнять их вовремя. Сравните эти два сегмента с помощью dtw
.
figure dtw(sigsInitialLeft{1},sigsFinalLeft{1}); legend('Early segment','Later segment','location','southeast')
Эти два сегмента выравниваются вовремя. Несмотря на то, что уровень шага пациента, кажется, изменяется в зависимости от времени, как видно в смещении исходных сигналов, dtw
совпадает с этими двумя сегментами, позволяя выборки любого сегмента повториться. Расстояние через dtw
, наряду с отклонением времен межшага, будет исследоваться как функции классификатора сигнала походки.
Предположим, что вы создаете классификатор, чтобы решить, здоров ли пациент на основе сигналов походки. Исследуйте отклонение времен межшага, feature1
, и расстояние через dtw
между начальной буквой и финалом сигнализируют о сегментах, feature2
, как функции классификации.
Покажите 1, был ранее вычислен с помощью midcross
.
feature1 = varIST;
Извлеките Функцию 2 для пациентов ALS и контрольной группы.
feature2 = zeros(10,1); for i = 1:length(sigsInitialLeft) feature2(i) = dtw(sigsInitialLeft{i},sigsFinalLeft{i}); end
Постройте функции предметов ALS и контрольных объектов.
figure plot(feature1(1:5),feature2(1:5),'r*',... feature1(6:10),feature2(6:10),'b+',... 'MarkerSize',10,'LineWidth',1) xlabel('Variance of Inter-Stride Times') ylabel('Distance Between Segments') legend('ALS','Control')
У пациентов ALS, кажется, есть большее отклонение в их времена межшага, но меньшее расстояние через dtw
между сегментами. Эти функции комплимент друг друга и могут быть исследованы для использования в классификаторе, таком как Нейронная сеть или Машина опорных векторов.
midcross
и dtw
обеспечьте удобный способ сравнить сигналы походки и другие физиологические данные, которые повторяются нерегулярно в зависимости от времени из-за различных уровней движения или действия. В этом примере времена шага были расположены с помощью midcross
и расстояния сегмента были вычислены с помощью dtw
. Они были дополнительными мерами как dtw
удаленный любое изменение времени, что midcross
расстояния измерились бы. Как функции, эти две метрики показали разделение между управлением и пациентами ALS для этого набора данных. midcross
и dtw
мог аналогично использоваться, чтобы исследовать другие физиологические сигналы, форма которых варьируется как функция действия.
[1] Голдбергер, A. L. Л. А. Н. Амарал, L. Стекло, Дж. М. Гаусдорф, P. Ch. Иванов, Р. Г. Марк, Р. Г. Митус, Г. Б. Муди, C.-K. Пенг и Х. Э. Стэнли. "PhysioBank, PhysioToolkit и PhysioNet: Компоненты Нового Ресурса Исследования для Комплексных Физиологических Сигналов". Циркуляция. Издание 101, Номер 23, 2000, стр e215-e200.