2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Фурье образ в Matlab
Сообщение10.10.2019, 15:34 


10/10/19
12
Помогите, пожалуйста. В матлабе нужно найти Фурье-образ функции. Функция E(x) задана как вектор 3000х1 точек. Подскажите, как такое сосчитать?
$E(t)=\int\limits_{\infty}^{-\infty}E(x)\cdot\exp(i\cdot\sin(t)\cdot(x))dx$
Попытался задать функцию, чтобы потом проинтегрировать, но выдает ошибку.
Код:
E_FT = @(teta) createFit(x, E(:,1).*exp(1i*k0*x(:)*sin(teta)));
F = @(t) E(:,1).*exp(1i*k0*x(:)*sin(t));

 Профиль  
                  
 
 Posted automatically
Сообщение10.10.2019, 15:47 
Супермодератор
Аватара пользователя


09/05/12
19252
Кронштадт
 i  Тема перемещена из форума «Околонаучный софт» в форум «Карантин»
по следующим причинам:

- отсутствуют собственные содержательные попытки решения задач(и).

Исправьте все Ваши ошибки и сообщите об этом в теме Сообщение в карантине исправлено.
Настоятельно рекомендуется ознакомиться с темами Что такое карантин и что нужно делать, чтобы там оказаться и Правила научного форума.

 Профиль  
                  
 
 Posted automatically
Сообщение10.10.2019, 17:11 
Супермодератор
Аватара пользователя


09/05/12
19252
Кронштадт
 i  Тема перемещена из форума «Карантин» в форум «Околонаучный софт»


-- 10.10.2019, 17:12 --

Откройте любой поисковик и наберите в нем "преобразование Фурье Matlab". Прочтите несколько первых ссылок.

 Профиль  
                  
 
 Re: Фурье образ в Matlab
Сообщение10.10.2019, 17:18 


10/10/19
12
С помощью алгоритма быстрого преобразования Фурье не получается тоже, уже пробовал давно, результат не верный выдает.

 Профиль  
                  
 
 Re: Фурье образ в Matlab
Сообщение10.10.2019, 17:23 
Заслуженный участник
Аватара пользователя


06/10/08
6205
А откуда Вам известен верный результат?

 Профиль  
                  
 
 Re: Фурье образ в Matlab
Сообщение10.10.2019, 17:33 


10/10/19
12
Xaositect в сообщении #1420109 писал(а):
А откуда Вам известен верный результат?

В учебниках написано, и в маткаде я этот интеграл посчитал.
Выдает постоянно что-то вроде этого. Функция меняется только на концах интервала.
Изображение

 Профиль  
                  
 
 Re: Фурье образ в Matlab
Сообщение10.10.2019, 17:38 
Заслуженный участник
Аватара пользователя


06/10/08
6205
То есть $E(x)$ все-таки задана не изначально на дискретной сетке, а как-то по-другому, а в матлабе Вы ее дискретизуете?
Приведите лучше это $E(x)$, а то если брать весь процесс, тут много подводных камней может вылезти.

 Профиль  
                  
 
 Re: Фурье образ в Matlab
Сообщение10.10.2019, 17:53 


10/10/19
12
Xaositect в сообщении #1420112 писал(а):
То есть $E(x)$ все-таки задана не изначально на дискретной сетке, а как-то по-другому, а в матлабе Вы ее дискретизуете?
Приведите лучше это $E(x)$, а то если брать весь процесс, тут много подводных камней может вылезти.

E(x) - это поле внутри волновода, которое получается из решения волнового уравнения. Ну или почти тоже самое, что волновая функция. Решал методом конечных разностей, поэтому функция дискретная.
Изображение

 Профиль  
                  
 
 Re: Фурье образ в Matlab
Сообщение10.10.2019, 18:16 
Заслуженный участник
Аватара пользователя


06/10/08
6205
Странно, для таких функций преобразование Фурье вроде бы должно нормально работать. Как Вы его пытались применять? В матлабе есть встроенная ф-я fft.

-- Чт окт 10, 2019 16:24:39 --

Хотя Вам же надо малые значения подставлять в частотной области ($\sin(t) \leq 1$). Надо, наверное, увеличить диапазон, на котором функция считается.

 Профиль  
                  
 
 Re: Фурье образ в Matlab
Сообщение10.10.2019, 18:30 


10/10/19
12
Xaositect в сообщении #1420116 писал(а):
Странно, для таких функций преобразование Фурье вроде бы должно нормально работать. Как Вы его пытались применять? В матлабе есть встроенная ф-я fft.

-- Чт окт 10, 2019 16:24:39 --

Хотя Вам же надо малые значения подставлять в частотной области ($\sin(t) \leq 1$). Надо, наверное, увеличить диапазон, на котором функция считается.

Диапазон тоже пробовал увеличить, не помогает.
Код:
FF = fft(E(:,1));
plot(x,FF)

Один и тот же результат всегда.
Изображение

 Профиль  
                  
 
 Re: Фурье образ в Matlab
Сообщение10.10.2019, 18:38 
Заслуженный участник
Аватара пользователя


06/10/08
6205
Ну правильно, это же соответсвует интегралу от $E(x) \exp(-i p x)$, а Вам надо $E(x) \exp(i \sin(t) x)$.

 Профиль  
                  
 
 Re: Фурье образ в Matlab
Сообщение10.10.2019, 18:42 


10/10/19
12
Xaositect в сообщении #1420125 писал(а):
Ну правильно, это же соответсвует интегралу от $E(x) \exp(-i p x)$, а Вам надо $E(x) \exp(i \sin(t) x)$.

А как тогда сделать, чтобы правильно было? В plot аргумент вместо Х тоже пробовал менять, выходит всегда тоже самое.

 Профиль  
                  
 
 Re: Фурье образ в Matlab
Сообщение10.10.2019, 23:08 


10/10/19
12
Xaositect в сообщении #1420125 писал(а):
Ну правильно, это же соответсвует интегралу от $E(x) \exp(-i p x)$, а Вам надо $E(x) \exp(i \sin(t) x)$.

Подскажите, пожалуйста, как это все таки сделать. Целый вечер уже голову ломаю, никак не получается))

 Профиль  
                  
 
 Re: Фурье образ в Matlab
Сообщение11.10.2019, 09:52 
Заслуженный участник
Аватара пользователя


06/10/08
6205
Что-то типа такого должно сработать. Нужно чтобы диапазон $x$ был достаточно большим ($2\pi k$, где $k$ - количество полученных точек). Фаза у комплексных чисел будет сбита на константу.
Код:
dx = % шаг дискретизации по x
n = % кол-во точек дискретизации
E = % значения ф-и E(x)

dp = (2*pi)/(n*dx)
P = 0:dp:1
k = length(P)
Z = fft(E, k)
T = asin(P)
plot(T, abs(Z))

 Профиль  
                  
 
 Re: Фурье образ в Matlab
Сообщение11.10.2019, 18:09 


10/10/19
12
Xaositect в сообщении #1420235 писал(а):
Что-то типа такого должно сработать. Нужно чтобы диапазон $x$ был достаточно большим ($2\pi k$, где $k$ - количество полученных точек). Фаза у комплексных чисел будет сбита на константу.
Код:
dx = % шаг дискретизации по x
n = % кол-во точек дискретизации
E = % значения ф-и E(x)

dp = (2*pi)/(n*dx)
P = 0:dp:1
k = length(P)
Z = fft(E, k)
T = asin(P)
plot(T, abs(Z))

Тоже самое получается. Не работает, похоже, эта функция fft или работает неправильно. Попробую, может, через определение интеграла посчитать.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

Модераторы: Toucan, maxal, PAV, Karan, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group