У меня есть микрофоны, измеряющие звук с течением времени в разных местах пространства. Все записываемые звуки исходят из одной и той же позиции в пространстве, но из-за разных путей от источника к каждому микрофону; сигнал будет (время) смещен и искажен. Априорные знания использовались, чтобы компенсировать временные сдвиги настолько хорошо, насколько это возможно, но в данных все же существует некоторый временной сдвиг. Чем ближе позиции измерения, тем более похожи сигналы.
Я заинтересован в автоматической классификации пиков. Под этим я подразумеваю, что я ищу алгоритм, который «смотрит» на два сигнала микрофона на графике ниже и «распознает» по положению и форме волны, что есть два основных звука, и сообщает их временное положение:
sound 1: sample 17 upper plot, sample 19 lower plot,
sound 2: sample 40 upper plot, sample 38 lower plot
Чтобы сделать это, я планировал выполнить разложение Чебышева вокруг каждого пика и использовать вектор коэффициентов Чебышева в качестве входных данных для кластерного алгоритма (k-средних?).
В качестве примера здесь приведены части сигналов времени, измеренных в двух соседних положениях (синим цветом), аппроксимированных 5-членной чебышевской серией по 9 выборкам (красным) вокруг двух пиков (синие кружки):
Аппроксимации довольно хорошие :-).
Однако; Чебышевские коэффициенты для верхнего графика составляют:
Clu = -1.1834 85.4318 -39.1155 -33.6420 31.0028
Cru =-43.0547 -22.7024 -143.3113 11.1709 0.5416
А коэффициенты Чебышева для нижнего участка:
Cll = 13.0926 16.6208 -75.6980 -28.9003 0.0337
Crl =-12.7664 59.0644 -73.2201 -50.2910 11.6775
Я хотел бы видеть Clu ~ = Cll и Cru ~ = Crl, но, похоже, это не так :-(.
Может быть, есть другой ортогональный базис, который больше подходит в этом случае?
Любой совет о том, как поступить (я использую Matlab)?
Заранее благодарю за любые ответы!