2014 dxdy logo

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

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




На страницу 1, 2  След.
 
 Фурье образ в Matlab
Сообщение10.10.2019, 15:34 
Помогите, пожалуйста. В матлабе нужно найти Фурье-образ функции. Функция 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 
 i  Тема перемещена из форума «Околонаучный софт» в форум «Карантин»
по следующим причинам:

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

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

 
 
 
 Posted automatically
Сообщение10.10.2019, 17:11 
 i  Тема перемещена из форума «Карантин» в форум «Околонаучный софт»


-- 10.10.2019, 17:12 --

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

 
 
 
 Re: Фурье образ в Matlab
Сообщение10.10.2019, 17:18 
С помощью алгоритма быстрого преобразования Фурье не получается тоже, уже пробовал давно, результат не верный выдает.

 
 
 
 Re: Фурье образ в Matlab
Сообщение10.10.2019, 17:23 
Аватара пользователя
А откуда Вам известен верный результат?

 
 
 
 Re: Фурье образ в Matlab
Сообщение10.10.2019, 17:33 
Xaositect в сообщении #1420109 писал(а):
А откуда Вам известен верный результат?

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

 
 
 
 Re: Фурье образ в Matlab
Сообщение10.10.2019, 17:38 
Аватара пользователя
То есть $E(x)$ все-таки задана не изначально на дискретной сетке, а как-то по-другому, а в матлабе Вы ее дискретизуете?
Приведите лучше это $E(x)$, а то если брать весь процесс, тут много подводных камней может вылезти.

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

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

 
 
 
 Re: Фурье образ в Matlab
Сообщение10.10.2019, 18:16 
Аватара пользователя
Странно, для таких функций преобразование Фурье вроде бы должно нормально работать. Как Вы его пытались применять? В матлабе есть встроенная ф-я fft.

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

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

 
 
 
 Re: Фурье образ в Matlab
Сообщение10.10.2019, 18:30 
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 
Аватара пользователя
Ну правильно, это же соответсвует интегралу от $E(x) \exp(-i p x)$, а Вам надо $E(x) \exp(i \sin(t) x)$.

 
 
 
 Re: Фурье образ в Matlab
Сообщение10.10.2019, 18:42 
Xaositect в сообщении #1420125 писал(а):
Ну правильно, это же соответсвует интегралу от $E(x) \exp(-i p x)$, а Вам надо $E(x) \exp(i \sin(t) x)$.

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

 
 
 
 Re: Фурье образ в Matlab
Сообщение10.10.2019, 23:08 
Xaositect в сообщении #1420125 писал(а):
Ну правильно, это же соответсвует интегралу от $E(x) \exp(-i p x)$, а Вам надо $E(x) \exp(i \sin(t) x)$.

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

 
 
 
 Re: Фурье образ в Matlab
Сообщение11.10.2019, 09:52 
Аватара пользователя
Что-то типа такого должно сработать. Нужно чтобы диапазон $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 
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  След.


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