Кто помнит преобразования Фурье?

stat6569931

Прошу помощи у знающих людей, т.к. матан давно и прочно забыт. Есть поточечно заданная 3 мерная поверхность в txt, формат файла такой:
 угол1(x) угол2(y) значение
 Нужно аппроксимировать ее 2D рядом Фурье:
 sum(cos(n*x)*sin(m*y n = 1..N, m = 1..M). n, m - целое. Интервал значений угла не постоянный. Получить нужно набор коэффициентов и вид множителей (sin*sin, cos*sin и т.д.). Может кто знает, как сделать это в каком нибудь пакете типа Mathlab, хоть алгоритм действий. Помогите чайнику, 3 неделю бьюсь...

sashok01

а матан тут простой. [math]$H(x,y)=\sum\limits_{i=1}^N\sum\limits_{j=1}^MA_{ij} F_i(x)G_j(y)$[/math], F,G - базисные функции, H - твоя табличная функция. Если ряд фурье, то F и G - синусы и косинусы, а система функций ортогональна. Умножим это равенство на F_k(x)*G_l(y) и проинтегрируем по области [0,a]x[0,b]. Если система функций ортогональна (например, взяты F_i(x)={1,cos(pi/a*xsin(pi/a*xcos(2*pi/a*xsin(2*pi/a*x ...},G_j(y)={1,cos(pi/b*ysin(pi/b*ycos(2*pi/b*ysin(2*pi/b*y ...} , то из всей суммы останется только один член, получится равенство:
[math]  $$  \int_0^a\int_0^b H(x,y)F_k(x)G_l(y)\,dy = A_{kl}\int_0^aF_k^2(x)\,dx\int_0^bG_l^2(y)\,dy  $$  [/math]
А дальше выражаешь A_{kl}, интегралы в правой части считаешь точно, в левой - численно.

stat6569931

Это вроде как хорошо и понятно, но
1) У меня дискретные значения, функцию интегрировать сходу не могу, а как аппроксимировать 2d функцию в mathlab ( или чем еще) я не знаю
2) Есть ведь вроде DFT?
Из моих догадок:
1. Сделать матрицу 2pi периодичной по столбцам и строкам
2. сделать DFT по столбцам, потом по строкам.
получаем набор комплексных чисел. Из них, вроде, надо извлекать коэффициенты, или я туплю?

sashok01

ну тада юзай метод наименьших квадратов.Минимизируй сумму квадратов разниц значений аппроксимирующей функции и твоей табличной в известных узлах, решай систему линейных уравнений размера MNxMN для нахождения коэффициентов Aij
зы: DFT - это что? Двойное преобразование фурье? Если да, то там то же самое интегрирование.
Не понятно, почему нельзя интегрировать твою таблично заданную функцию - всякие формулы трапеций, прямоугольников и парабол как раз для этого придуманы

Lene81

Если не охота разбираться с теорией DFT (кстати, DFT — это "Discrete Fourier Transform", дискретное преобразование Фурье то посмотри в сторону FFTW3 — библиотеки для выполнения этого преобразования. Там есть готовый код для 1-, 2-, 3-D случаев.
А так, теория DFT и FFT неплохо написана в Numerical Recipes
Оставить комментарий
Имя или ник:
Комментарий: