Оптимальное масштабирование методом наименьших квадратов

У меня есть две формы волны, которые связаны числовым коэффициентом. Мне нужно использовать оптимальное масштабирование (наименьшие квадраты) между двумя сигналами, чтобы вычислить этот коэффициент в Matlab. К сожалению, я понятия не имею, как это сделать. Две формы волны — это сейсмические сигналы, связанные скоростью сейсмических волн, которую я пытаюсь вычислить. Любые идеи? нужна дополнительная информация?


person Jon    schedule 16.12.2009    source источник
comment
Связаны ли две волны коэффициентом амплитуды или коэффициентом частоты? Есть ли фазовый сдвиг между двумя волнами?   -  person jilles de wit    schedule 16.12.2009
comment
Амплитуда сигналов должна масштабироваться пропорционально коэффициенту, который я пытаюсь рассчитать. Может быть небольшой фазовый сдвиг, но давайте пока предположим, что его нет.   -  person Jon    schedule 16.12.2009


Ответы (2)


Назовите W1 и W2 двумя векторами. Чтобы это работало, они должны быть векторами-столбцами. Транспонируйте их, если они представляют собой строки, а не столбцы. Затем, если мы хотим найти такое значение k, что W1 = k*W2, просто используйте обратную косую черту.

k = W2\W1;

Обратная косая черта здесь дает вам оценку линейной регрессии (наименьших квадратов), как и требовалось. Конечно, это не касается случая неизвестного фазового сдвига.

person Community    schedule 16.12.2009
comment
Есть ли предел способности этого уравнения в качестве оценки? Я ожидаю значений 2500-4000, но этот метод дает мне значение 0,9913. Я могу приблизиться к моему ожидаемому значению, разделив отдельные значения из двух векторов-столбцов. Я тоже подумал, что иногда отношение сигнал/шум чрезвычайно низкое, а это означает, что волны будут полностью не в фазе. Мне придется ограничить уравнение только областями с высоким отношением сигнал/шум. - person Jon; 16.12.2009
comment
Извините, я ошибся в уравнении. Теперь я исправил это, но я все еще получаю широко варьирующийся результат, когда я использую это на небольших сегментах сигналов, и результаты, которые я ожидаю, должны быть довольно линейными. - person Jon; 16.12.2009
comment
если вам нужно аффинное преобразование, вы должны включить термин перехвата: betas = [ones(numel(W2),1),W2(:)] \ W1(:), после которого W1 приблизительно равно betas(1) + betas(2) * W2; - person shabbychef; 16.12.2009
comment
Если сигналы не совпадают по фазе, вы можете столкнуться с проблемами, так как в этом случае два сигнала будут ортогональны. Однако очень маловероятно, что они сдвинуты по фазе практически на 90 градусов, тем более что вы сказали, что это не является существенным фактором. Являются ли эти векторы COLUMN необходимыми, как я указал? Если вы не уверены, используйте k=W2(:)\W1(:); - person ; 17.12.2009

один дрянной способ оценить линейный фактор, не имея дело со сдвигом фазы, состоит в том, чтобы вычислить отношение предполагаемых масштабов волн. самый простой способ - использовать стандартное отклонение:

k = std(W1) / std(W2);

если вы заботитесь о надежности, я бы заменил на MAD или IQR; MAD - это срединное абсолютное отклонение, которое вы можете (несколько неэффективно) «встроить» следующим образом:

MAD = @(x)(median(abs(bsxfun(@minus,x,median(x)))));
k = MAD(W1) / MAD(W2);

IQR - это межквартильный диапазон, который требует правильного вычисления квантиля. вы можете реализовать это неэффективно, используя sort. Я оставляю это в качестве упражнения читателю.

person shabbychef    schedule 16.12.2009
comment
Кстати, такого рода вещи являются хлебом пульсоксиметрии. Если у вас закончились идеи, обратитесь к литературе по закупкам или просмотрите патенты, выпущенные Nellcor и Massimo. - person shabbychef; 16.12.2009