samplealign

Выровняйте два набора данных, содержащие последовательные наблюдения путем представления разрывов

Синтаксис

[I, J] = samplealign(X, Y)
[I, J] = samplealign(X, Y, ...'Band', BandValue, ...)
[I, J] = samplealign(X, Y, ...'Width', WidthValue, ...)
[I, J] = samplealign(X, Y, ...'Gap', GapValue, ...)
[I, J] = samplealign(X, Y, ...'Quantile', QuantileValue, ...)
[I, J] = samplealign(X, Y, ...'Distance', DistanceValue, ...)
[I, J] = samplealign(X, Y, ...'Weights', WeightsValue, ...)
[I, J] = samplealign(X, Y, ...'ShowConstraints', ShowConstraintsValue, ...)
[I, J] = samplealign(X, Y, ...'ShowNetwork', ShowNetworkValue, ...)
[I, J] = samplealign(X, Y, ...'ShowAlignment', ShowAlignmentValue, ...)

Входные параметры

XYМатрицы данных, где строки соответствуют наблюдениям или выборкам и столбцам, соответствуют функциям или размерностям. X и Y может иметь различное количество строк, но у них должно быть одинаковое число столбцов. Первый столбец является ссылочной размерностью и должен содержать уникальные значения в порядке возрастания. Ссылочная размерность могла содержать демонстрационные индексы наблюдений или измеримого значения, таких как время.
BandValue

Любое из следующего:

  • Скаляр.

  • Функция задала использование (z), где z средняя точка между заданным наблюдением в одном наборе данных и заданным наблюдением в другом наборе данных.

BandValue задает максимальное допустимое расстояние между наблюдениями (только по ссылочному измерению) в этих двух наборах данных, таким образом ограничивая количество потенциальных соответствий между наблюдениями в двух наборах данных. Если S значение в ссылочной размерности для заданного наблюдения (строка) в одном наборе данных, затем то наблюдение является соответствующим только с наблюдениями в другом наборе данных, значения которого в ссылочной размерности находятся в пределах S ± BandValue. Затем только эти потенциальные соответствия передаются алгоритму для дальнейшего выигрыша. BandValue по умолчанию isinf.

WidthValue

Любое из следующего:

  • Двухэлементный вектор, [UV]

  • Скаляр, который используется для обоих U и V

WidthValue ограничивает количество потенциальных соответствий между наблюдениями в двух наборах данных; то есть, каждое наблюдение в X выигран к самому близкому U наблюдения в Y, и каждое наблюдение в Y выигран к самому близкому V наблюдения в X. Затем только эти потенциальные соответствия передаются алгоритму для дальнейшего выигрыша. Близость измеряется с помощью только первый столбец (ссылочная размерность) в каждом наборе данных. Значением по умолчанию является Inf если 'Band' задан; в противном случае значением по умолчанию является 10.

GapValue

Любое следующее:

  • Массив ячеек, {GH}, где G или скаляр или заданное использование указателя на функцию (X), и H или скаляр или заданное использование указателя на функцию (Y). Функции (X) и (Y) должен вычислить штраф за каждое наблюдение (строка), когда это является соответствующим к разрыву в другом наборе данных. Функции (X) и (Y) должен возвратить вектор-столбец с одинаковым числом строк как X или Y, содержа штраф разрыва за каждое наблюдение (строка).

  • Один указатель на функцию задал использование (Z), который используется для обоих G и H. Функция (Z) должен вычислить штраф за каждое наблюдение (строка) в обоих X и Y когда это является соответствующим к разрыву в другом наборе данных. Функция (Z) должен взять в качестве аргументов X и Y. Функция (Z) должен возвратить вектор-столбец с одинаковым числом строк как X или Y, содержа штраф разрыва за каждое наблюдение (строка).

  • Скаляр, который используется для обоих G и H.

GapValue задает позиционно-зависимые термины для присвоения штрафов разрыва. Расчетное значение, GPX, штраф разрыва за соответствие с наблюдениями от первого набора данных X к разрывам, вставленным во второй набор данных Y, и продукт двух терминов: GPX = G * QMS. Термин G принимает его значение в зависимости от наблюдений в X. Точно так же GPY штраф разрыва за соответствие с наблюдениями от Y к разрывам, вставленным в X, и продукт двух терминов: GPY = H * QMS. Термин H принимает его значение в зависимости от наблюдений в Y. По умолчанию, термин QMS 0,75 квантиля счета к парам наблюдений, которые являются потенциальными соответствиями (то есть, пары, которые выполняют 'Band' и 'Width' ограничения. GapValue по умолчанию 1.

QuantileValueСкаляр между 0 и 1 это указывает, что значение квантиля раньше вычисляло термин QMS, который используется 'Gap' свойство вычислить штрафы разрыва. Значением по умолчанию является 0.75.
DistanceValue

Указатель на функцию задал использование (RS). Функция (RS) должен:

  • Вычислите расстояние между парами наблюдений, которые являются потенциальными соответствиями.

  • Возьмите в качестве аргументов, R и S, матрицы, которые имеют одинаковое число строк и столбцы, и чьи парные строки представляют все потенциальные соответствия наблюдений в X и Y соответственно.

  • Возвратите вектор-столбец положительных значений с тем же числом элементов как строки в R и S.

Значением по умолчанию является Евклидово расстояние между парами.

Внимание

Все столбцы в X и Y, включая ссылочную размерность, рассматриваются при вычислении расстояний. Если вы не хотите включать ссылочную размерность на расстоянии вычисления, используйте 'Weight' свойство исключить его.

WeightsValue

Любое из следующего:

  • Логический вектор-строка с тем же числом элементов как столбцы в X и Y, это задает столбцы в X и Y.

  • Числовой вектор-строка с тем же числом элементов как столбцы в X и Y, это задает относительные веса столбцов (функции).

Это свойство управляет включением/исключением столбцов (функции) или акцент столбцов (функции) при вычислении счета расстояния между наблюдениями, которые являются потенциальными соответствиями, то есть, при использовании 'Distance' свойство. Значением по умолчанию является логический вектор-строка со всем набором элементов к true.

Совет

Используя числовой вектор-строку для WeightsValue и устанавливание некоторых значений к 0 может упростить расчет расстояния, когда наборы данных имеют много столбцов (функции).

Примечание

Значения веса не рассматриваются при использовании 'Band'width, или 'Gap' свойство.

ShowConstraintsValueУправляет отображением пространства поиска, ограниченного заданным 'Band' и 'Width' введите параметры, таким образом, дав индикацию относительно памяти, требуемой запускать алгоритм с определенным 'Band' и 'Width' параметры на ваших наборах данных. Выбором является true или false (значение по умолчанию).
ShowNetworkValueУправляет отображением динамической сети программирования, баллов соответствия, штрафов разрыва и пути к победе. Выбором является true или false (значение по умолчанию).
ShowAlignmentValueУправляет отображением первых и вторых столбцов X и Y наборы данных в абсциссе и ординате соответственно, двумерного графика. Выбором является trueложь (значение по умолчанию) или целое число, задающее столбец X и Y наборы данных, чтобы построить как ордината.

Выходные аргументы

IВектор-столбец, содержащий индексы строк (наблюдения) в X то соответствие к строке (наблюдение) в Y. Недостающие индексы указывают, что строка (наблюдение) является соответствующей к разрыву.
JВектор-столбец, содержащий индексы строк (наблюдения) в Y то соответствие к строке (наблюдение) в X. Недостающие индексы указывают, что строка (наблюдение) является соответствующей к разрыву.

Описание

[I, J] = samplealign(X, Y) выравнивает наблюдения в двух матрицах данных, X и Y, путем представления разрывов. X и Y матрицы данных, где строки соответствуют наблюдениям или выборкам, и столбцы соответствуют функциям или размерностям. X и Y может иметь различное количество строк, но должен иметь одинаковое число столбцов. Первый столбец является ссылочной размерностью и должен содержать уникальные значения в порядке возрастания. Ссылочная размерность могла содержать демонстрационные индексы наблюдений или измеримого значения, таких как время. samplealign функционируйте использует динамический алгоритм программирования, чтобы минимизировать сумму положительных баллов, следующих из пар наблюдений, которые являются потенциальными соответствиями и штрафами, следующими из вставки разрывов. Возвращаемые значения I и J вектор-столбцы, содержащие индексы, которые указывают на соответствия для каждой строки (наблюдение) в X и Y соответственно.

Совет

Если вы не задаете возвращаемые значения, samplealign не запускает динамический алгоритм программирования. Выполнение samplealign без возвращаемых значений, но установки 'ShowConstraints', 'ShowNetwork', или 'ShowAlignment' свойство к true, позволяет вам исследовать ограниченное пространство поиска, динамическую сеть программирования или выровненные наблюдения, не сталкиваясь с потенциальными проблемами памяти.

iJ] = samplealign (XYPropertyName ', PropertyValue, ...) вызовы samplealign с дополнительными свойствами, которые используют имя свойства / пары значения свойства. Можно задать одно или несколько свойств в любом порядке. Каждый PropertyName должен быть заключен в одинарные кавычки и нечувствительный к регистру. Это имя свойства / пары значения свойства следующие:

[I, J] = samplealign(X, Y, ...'Band', BandValue, ...) задает максимальное допустимое расстояние между наблюдениями (только по ссылочному измерению) в этих двух наборах данных, таким образом ограничивая количество потенциальных соответствий между наблюдениями в этих двух наборах данных. Если S значение в ссылочной размерности для заданного наблюдения (строка) в одном наборе данных, затем то наблюдение является соответствующим только с наблюдениями в другом наборе данных, значения которого в ссылочной размерности находятся в пределах S ± BandValue. Затем только эти потенциальные соответствия передаются алгоритму для дальнейшего выигрыша. BandValue может быть скаляр, или функция задала использование (z), где z средняя точка между заданным наблюдением в одном наборе данных и заданным наблюдением в другом наборе данных. BandValue по умолчанию isinf.

Это ограничение уменьшает время и сложность памяти алгоритма от O (MN) к O (sqrt (MNK), где M и N количество наблюдений в X и Y соответственно, и K маленькая константа, таким образом что K<<M и K<<N. Настройте BandValue к максимальному ожидаемому сдвигу между ссылочными размерностями в этих двух наборах данных, то есть, между X(: 1) и Y(:,1).

[I, J] = samplealign(X, Y, ...'Width', WidthValue, ...) ограничивает количество потенциальных соответствий между наблюдениями в двух наборах данных; то есть, каждое наблюдение в X выигран к самому близкому U наблюдения в Y, и каждое наблюдение в Y выигран к самому близкому V наблюдения в X. Затем только эти потенциальные соответствия передаются алгоритму для дальнейшего выигрыша. WidthValue любой двухэлементный вектор, [UV] или скаляр, который используется для обоих U и V. Близость измеряется с помощью только первый столбец (ссылочная размерность) в каждом наборе данных. Значением по умолчанию является Inf если 'Band' задан; в противном случае значением по умолчанию является 10.

Это ограничение уменьшает время и сложность памяти алгоритма от O (MN) к O (sqrt (MN) *sqrt (UV)), где M и N количество наблюдений в X и Y соответственно, и U и V малы таким образом что U<<M и V<<N.

Примечание

Если вы задаете оба 'Band' и 'Width', только пары наблюдений, которые соответствуют обоим ограничениям, рассматриваются потенциальными соответствиями и передаются алгоритму для выигрыша.

Совет

Задайте 'Width' когда у вас нет хорошей оценки для 'Band' свойство. Получить индикацию относительно памяти, требуемой запускать алгоритм с определенным 'Band' и 'Width' параметры на ваших наборах данных, запустите samplealign, но не задавайте возвращаемые значения и устанавливайте 'ShowConstraints' к true.

[I, J] = samplealign(X, Y, ...'Gap', GapValue, ...) задает позиционно-зависимые термины для присвоения штрафов разрыва.

GapValue любое следующее:

  • Массив ячеек, {GH}, где G или скаляр или заданное использование указателя на функцию (X), и H или скаляр или заданное использование указателя на функцию (Y). Функции (X) и (Y) должен вычислить штраф за каждое наблюдение (строка), когда это является соответствующим к разрыву в другом наборе данных. Функции (X) и (Y) должен возвратить вектор-столбец с одинаковым числом строк как X или Y, содержа штраф разрыва за каждое наблюдение (строка).

  • Один указатель на функцию задал использование (Z), это используется для обоих G и H. Функция (Z) должен вычислить штраф за каждое наблюдение (строка) в обоих X и Y когда это является соответствующим к разрыву в другом наборе данных. Функция (Z) должен взять в качестве аргументов X и Y. Функция (Z) должен возвратить вектор-столбец с одинаковым числом строк как X или Y, содержа штраф разрыва за каждое наблюдение (строка).

  • Скаляр, который используется для обоих G и H.

Расчетное значение, GPX, штраф разрыва за соответствие с наблюдениями от первого набора данных X к разрывам, вставленным во второй набор данных Y, и продукт двух терминов: GPX = G * QMS. Термин G принимает его значение в зависимости от наблюдений в X. Точно так же GPY штраф разрыва за соответствие с наблюдениями от Y к разрывам, вставленным в X, и продукт двух терминов: GPY = H * QMS. Термин H принимает его значение в зависимости от наблюдений в Y. По умолчанию, термин QMS 0,75 квантиля счета к парам наблюдений, которые являются потенциальными соответствиями (то есть, пары, которые выполняют 'Band' и 'Width' ограничения.

Если G и H положительные скалярные величины, затем GPX и GPY независимы от наблюдения, где разрыв вставляется.

GapValue по умолчанию 1, то есть, оба G и H 1, который указывает, что штраф по умолчанию за вставки разрыва в обеих последовательностях эквивалентен квантилю (установленный 'Quantile' свойство, значение по умолчанию = 0.75) из счета к парам наблюдений, которые являются потенциальными соответствиями.

Примечание

GapValue значения по умолчанию к относительно безопасному значению. Однако успех алгоритма зависит от точной настройки штрафов разрыва, которая является зависящей от приложения. Когда штрафы разрыва являются большими относительно счета правильных соответствий, samplealign возвращает выравнивания с меньшим количеством разрывов, но с более неправильно выровненными областями. Когда штрафы разрыва меньше, выходное выравнивание содержит более длинные области с разрывами и меньшим количеством совпадающих наблюдений. Установите 'ShowNetwork' к true сравнить штрафы разрыва счету совпадающих наблюдений в различных областях выравнивания.

[I, J] = samplealign(X, Y, ...'Quantile', QuantileValue, ...) указывает, что значение квантиля раньше вычисляло термин QMS, который используется 'Gap' свойство вычислить штрафы разрыва. QuantileValue скаляр между 0 и 1. Значением по умолчанию является 0.75.

Совет

Установите QuantileValue к пустому массиву ([]) сделать штрафы разрыва независимыми от QMS, то есть, GPX и GPY функции только G и H введите параметры соответственно.

[I, J] = samplealign(X, Y, ...'Distance', DistanceValue, ...) задает функцию, чтобы вычислить расстояние между парами наблюдений, которые являются потенциальными соответствиями. DistanceValue заданное использование указателя на функцию (RS). Функция (RS) должен взять в качестве аргументов, R и S, матрицы, которые имеют одинаковое число строк и столбцы, и чьи парные строки представляют все потенциальные соответствия наблюдений в X и Y соответственно. Функция (RS) должен возвратить вектор-столбец положительных значений с тем же числом элементов как строки в R и S. Значением по умолчанию является Евклидово расстояние между парами.

Внимание

Все столбцы в X и Y, включая ссылочную размерность, рассматриваются при вычислении расстояний. Если вы не хотите включать ссылочную размерность на расстоянии вычисления, используйте 'Weight' свойство исключить его.

[I, J] = samplealign(X, Y, ...'Weights', WeightsValue, ...) управляет включением/исключением столбцов (функции) или акцент столбцов (функции) при вычислении счета расстояния между наблюдениями, которые являются потенциальными соответствиями, который является при использовании 'Distance' свойство. WeightsValue может быть логический вектор-строка, который задает столбцы в X и Y. WeightsValue может также быть числовой вектор-строка с тем же числом элементов как столбцы в X и Y, это задает относительные веса столбцов (функции). Значением по умолчанию является логический вектор-строка со всем набором элементов к true.

Совет

Используя числовой вектор-строку для WeightsValue и устанавливание некоторых значений к 0 может упростить расчет расстояния, когда наборы данных имеют много столбцов (функции).

Примечание

Значения веса не рассматриваются при вычислении ограниченного пробела выравнивания, который является при использовании 'Band' или 'Width' свойства, или при вычислении штрафов разрыва, который является при использовании 'Gap' свойство.

[I, J] = samplealign(X, Y, ...'ShowConstraints', ShowConstraintsValue, ...) управляет отображением пространства поиска, ограниченного входными параметрами 'Band' и 'Width', предоставление индикации относительно памяти, требуемой запускать алгоритм с определенным 'Band' и 'Width' на ваших наборах данных. Выбором является true или false (значение по умолчанию).

[I, J] = samplealign(X, Y, ...'ShowNetwork', ShowNetworkValue, ...) управляет отображением динамической сети программирования, баллов соответствия, штрафов разрыва и пути к победе. Выбором является true или false (значение по умолчанию).

[I, J] = samplealign(X, Y, ...'ShowAlignment', ShowAlignmentValue, ...) управляет отображением первых и вторых столбцов X и Y наборы данных в абсциссе и ординате соответственно, двумерного графика. Отображены ссылки между всеми потенциальными соответствиями, которые соответствуют ограничениям, и соответствия, принадлежащие выходному выравниванию, подсвечены. Выбором является trueложь (значение по умолчанию) или целое число, задающее столбец X и Y наборы данных, чтобы построить как ордината.

Примеры

Пример 71. Деформирование синусоиды со сглаженной функцией, чтобы больше сопроводить циклическое действие солнечного пятна
  1. Загрузите sunspot.dat, файл данных включен с MATLAB® программное обеспечение, которое содержит переменную sunspot, который является матрицей 2D столбца, содержащей изменения действия солнечного пятна за прошлые 300 лет. Первый столбец является ссылочной размерностью (годы), и второй столбец содержит значения действия солнечного пятна. Действие солнечного пятна циклично, достигая максимума о каждых 11 годах.

    load sunspot.dat
  2. Создайте синусоиду с известным периодом действия солнечного пятна.

    years = (1700:1990)';
    T = 11.038;
    f = @(y) 60 + 60 * sin(y*(2*pi/T));
  3. Выровняйте наблюдения между синусоидой и действием солнечного пятна путем представления разрывов.

    [i,j] = samplealign([years f(years)],sunspot,'weights',...
                        [0 1],'showalignment',true);

  4. Оцените, что сглаженная функция деформирует синусоиду.

    [p,s,mu] = polyfit(years(i),years(j),15);
    wy = @(y) polyval(p,(y-mu(1))./mu(2));
  5. Постройте циклы солнечной активности, недеформированную синусоиду и деформированную синусоиду.

    years = (1700:1/12:1990)';
    figure
    plot(sunspot(:,1),sunspot(:,2),years,f(years),wy(years),...
         f(years))
    legend('Sunspots','Unwarped Sine Wave','Warped Sine Wave')
    title('Smooth Warping Example')

Пример 72. Восстановление нелинейного деформирования между двумя сигналами, содержащими шумный Гауссов peaks
  1. Создайте два сигнала с шумным Гауссовым peaks.

    rng('default')
    peakLoc = [30 60 90 130 150 200 230 300 380 430];
    peakInt = [7 1 3 10 3 6 1 8 3 10];
    time = 1:450;
    comp = exp(-(bsxfun(@minus,time,peakLoc')./5).^2);
    sig_1 = (peakInt + rand(1,10)) * comp + rand(1,450);
    sig_2 = (peakInt + rand(1,10)) * comp + rand(1,450);
  2. Задайте нелинейную функцию деформирования.

    wf = @(t) 1 + (t<=100).*0.01.*(t.^2) + (t>100).*...
         (310+150*tanh(t./100-3));
  3. Деформируйте второй сигнал исказить его.

    sig_2 = interp1(time,sig_2,wf(time),'pchip');
  4. Выровняйте наблюдения между двумя сигналами путем представления разрывов.

    [i,j] = samplealign([time;sig_1]',[time;sig_2]',...
                        'weights',[0,1],'band',35,'quantile',.5);
  5. Постройте опорный сигнал, искаженный сигнал, и деформировал (откорректированный) сигнал.

    figure
    sig_3 = interp1(time,sig_2,interp1(i,j,time,'pchip'),'pchip');
    plot(time,sig_1,time,sig_2,time,sig_3)
    legend('Reference','Distorted Signal','Corrected Signal')
    title('Non-linear Warping Example')

  6. Постройте действительное и предполагаемые функции деформирования.

    figure
    plot(time,wf(time),time,interp1(j,i,time,'pchip'))
    legend('Distorting Function','Estimated Warping')

Ссылки

[1] Майерс, C.S. и Rabiner, L.R. (1981). Сравнительное исследование нескольких алгоритмов динамической трансформации временной шкалы для связанного распознавания слов. Система Bell Технический Журнал 60:7, 1389-1409.

[2] Sakoe, H. и Чиба, S. (1978). Динамическая оптимизация алгоритма программирования для распознавания произносимого слова. Сделка IEEE. Акустика, Речь и Обработка сигналов ASSP-26 (1), 43–49.

Смотрите также

| | | |

Представленный в R2007b