2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Матрица гармонического вейвлет-преобразования
Сообщение06.01.2011, 21:05 
Здравствуйте, друзья!!!

Многие из вас наверняка работали с вейвлет-преобразованием и, возможно, с гармоническими вейвлетами. Мне необходимо получить матрицу, которая давала бы вейвлет-коэффициенты будучи умноженной слева на исходную функцию:
$a = Rx,$

где a - вектор вейвлет-коэффиентов, x - исходный сигнал (функция), R - искомая матрица. Согласно схеме диадического (двоичного) банка фильтров, на 1-м уровне N/2 коэффициентов, на 2-м - N/4, на 3-м - N/8 .... и т.д. В векторе a эти коэффициенты записаны в обратном порядке - от самого грубого уровня к самому тонкому, т.е N/2 коэффициентов самого тонкого уровня идут в векторе a последними. Описание алгоритма гармонического вейвлет-преобразования - очень длинное, поэтому приведу код MATLAB с пояснениями: f - исходная функция, N - ее дина (число отсчетов), fft - функция расчета дискретного преобразования Фурье (ДПФ) с помощью быстрого преобразования Фурье (БПФ) - в данном случае по методу Кули-Тьюки, поскольку длина N есть целая степень двойки. n определяет общее число уровней полного вейвлет-разложения; a - вектор вейвлет-коэффициентов (как в формуле выше), F - вектор Фурье-коэффициентов
Код:
function a=hwtdn(f)

[r,s]=size(f);
if r>s, f=f'; end
N=length(f);
n=round(log(N)/log(2));
F=fft(f)/N;
a(1)=F(1); a(2)=F(2);

[b]for[/b] j=1:n-2
a(2^j+1:2^(j+1))=ifft(F(2^j+1:2^(j+1)))*2^j;
a(N-2^(j+1)+2:N-2^j+1)=fliplr(fft(fliplr(F(N-2^(j+1)+2:N-2^j+1))));
[b]end[/b]

a(N/2+1)=F(N/2+1);
a(N)=F(N);

Итак, на промежуточном этапе вычисляется ДПФ. Записываем:
$Ax = F$
,

где A - матрица ДПФ (размерностью NxN), F - вектор Фурье-коэффициентов. x имеет размерность Nx1, поэтому F имеет размерность Nx1 по правилу матричного умножения.

Далее, в соттветсвии с кодом, вектор F надо умножить на некоторую неизвестную матрицу W:

$WF = a$


Найдя матрицу W, мы решим задачу.

Мое решение:


1) $A x = F$
2) $W F / N = a$ (деление вектора F на число N делается в соответсвии с программным кодом, приведенным выше)
3) $W F = a N$
4) $W  F  F ^T = a N F ^T $, где умножение на транспонированную матрицу необходимо для последующего формирования обратной и получения в явном виде выражения для W
5) $W = a N F ^T  (F F ^T)^{-1} $

Дальше я не знаю, что делать, поскольку $(F F ^T)^{-1} $ не существует, т.к. ее определитель равен 0 (из-за того, что $F  F ^T$ - симметричная матрица).

Подскажите, пожалуйста, что делать дальше. Может быть, мой путь изначально был неверен?

Заранее спасибо!!!

 
 
 
 Re: Матрица гармонического вейвлет-преобразования
Сообщение07.01.2011, 16:58 
Dmitrii,

совсем не разбираясь в вейвлетах, я позволю себе предположить, что Вы плохо описали проблему. Сумбурно.
Я думал, что кто-то ответит по существу, и пишу эту свою версию только потому, что никто до сих пор не ответил.

У Вас в постановке задачи фигурируют вейвлеты, Фулье, Матлаб, матрицы, прочие фулечки... А в Вашем решении --- похоже, используется только стандартные штуки матричной алгебры, безотносительно к перечисленным фулечкам. Может быть, Вы могли этого избежать и в постановке, упростить изложение проблемы?

Вот более конкретные придирки:
Dmitrii в сообщении #396084 писал(а):
Мне необходимо получить матрицу, которая давала бы вейвлет-коэффициенты будучи умноженной слева на исходную функцию:
a = R x,

где a - вектор вейвлет-коэффиентов, x - исходный сигнал (функция), R - искомая матрица
$a$ Вы называете вектором, $x$ --- почему-то функцией. Но это тоже в первую очередь вектор (функция он, или сигнал --- дополнительная информация, возможно, не особо значимая).
В Вашем решении искомая матрица $R$ уже не встечается. Что-то переобозначено?
Цитата:
Далее, в соттветсвии с кодом, вектор F надо умножить на некоторую неизвестную матрицу W:
Как-то странно --- обосновывать необходимость операции кодом программы...
Цитата:
(деление вектора F на число N делается в соответсвии с программным кодом, приведенным выше)
То есть это не обычное деление вектора на число, а какое-то специальное, "в соответствии с кодом"? Да? Реально надо лезть смотреть код?
Цитата:
Дальше я не знаю, что делать, поскольку $(F * F ^T)^{-1} $ не существует, т.к. ее определитель равен 0 (из-за того, что $F * F ^T$ - симметричная матрица).
Вы как бы утверждаете что определитель симметричной матрицы равен нулю? $\mathrm{Det} \begin{pmatrix}0 & 1\\1 & 0\end{pmatrix}=0\,?$
Да, я вырвал фразу из контекста, но такие фразы, по-моему, можно вырывать. Или вейвлет-контекст что-то меняет?

(TeX-offtopic)

Реально могу посоветовать только не ставить тэги маth, а только доллары вокруг формулы. Центрирование формулы Вам обеспечат двойные доллары типа $$a=B\times x$$ даст $$a=B\times x$$

 
 
 
 Re: Матрица гармонического вейвлет-преобразования
Сообщение07.01.2011, 19:40 
Благодарю за ответ!!!

Проблема в том, что не вникая в метод расчета вейвлет-коэффициентов все равно задачу не решить. Другое дело, что расчет этот очень простой, и он приведен в коротком фрагменте MATLAB кода в первом моем сообщении (см. выше).

Как известно, любое линейное преобразование можно записать в векторно-матричном виде. В данном случае сначала для исходного вектора x вычисляется ДПФ и получаются фурье-коэффициенты, хранящиеся в векторе F. Для их получения используется A - матрица ДПФ:
$$A\times x = F$$
Далее на Фурье-коэффициенты слева умножается еще одна матрица W, которую и нужно найти, и получаются сами вейвлет-коэффициенты (вектор a):
$$W\times F = a$$

Используя обе формулы, получаем:

$$W\times A \times x= a$$

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

Надеюсь, теперь станет чуть-чуть яснее...

Надеюсь на вашу помощь. Если необходимо, прокомментирую код, написанный в первом сообщении.

Спасибо

 
 
 
 Re: Матрица гармонического вейвлет-преобразования
Сообщение07.01.2011, 19:59 
А как насчёт детерминанта? Может, Вы решили задачу, но придумали себе псевдотрудность с нулевым детерминантом?

Лично мне комментарий к коду не нужен: ясно, что не разберусь с этими штуками.
Лишь попросим пробегающего мимо модератора окружить его тэгом code --- тогда это будет читабельнее для читателей кодов.

 
 
 
 Re: Матрица гармонического вейвлет-преобразования
Сообщение07.01.2011, 20:12 
Алексей К. в сообщении #396374 писал(а):
А как насчёт детерминанта? Может, Вы решили задачу, но придумали себе псевдотрудность с нулевым детерминантом?

Лично мне комментарий к коду не нужен: ясно, что не разберусь с этими штуками.
Лишь попросим пробегающего мимо модератора окружить его тэгом code --- тогда это будет читабельнее для читателей кодов.


Нет, с детерминантом я прав. Просто я слишком обобщил, и в этом была ошбка. Вот, что я имел в виду. Если F - вектор-столбец, то произведение $ F F ^T $ всегда даст матрицу с нулевым определителем.

А как искать обратную матрицу к той, у которой определитель нулевой? Слышал что-то про псевдообратную, но не знаю, как ее искать и то ли это.

Спасибо

 
 
 
 Re: Матрица гармонического вейвлет-преобразования
Сообщение07.01.2011, 20:28 
Думаю, псевдообратная --- это синоним присоединённой матрицы (должно быть даже в Википедиях). Мне она как-то помогла:
Алексей К. в сообщении #74216 писал(а):
...Для этого вместо матрицы $M$ следует взять для итераций матрицу ... как бишь она называлась? присоединённая, кажется, adjoint. Элементы подменены своими минорами.
ниже незваный гость писал(а):
И транспонируются.(поправлено для полноты --- АК)

Можно было бы взять и обратную матрицу, но $M$ при идеальной плоскости или прямой будет вырождена. Эта, присоединённая, легко считается. С ней и итерируем.

 
 
 [ Сообщений: 6 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group