Форум программистов, компьютерный форум, киберфорум
Python: Научные вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 01.12.2018
Сообщений: 6

Частоты в дискретном преобразовании Фурье

15.02.2020, 11:34. Показов 968. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,
Есть безразмерная функция https://www.cyberforum.ru/cgi-bin/latex.cgi?G_{ab}(t)=e^{iw_0t}\prod_{j} e^{-S_j[1-e^{-iw_jt}], нужно из нее получить
функцию https://www.cyberforum.ru/cgi-bin/latex.cgi?I_{ab}(w)=Re\int e^{-iwt-\gamma t}G_{ab}(t)dt.
Величина S - безразмерная. Столкнулся с проблемой, что если время задаю в атомных единицах (a.u.), частоты считываю из файла в единицах см⁻¹ и перевожу в атомные единицы (то есть величина G_ab рассчитывается в атомных), то после преобразования Фурье и перевода единиц частот из якобы атомных в см⁻¹, частоты получаются не такими какие должны быть.
По ссылке прикреплю картинку какие графики получаются. Второй график с рассчитанными величинами, нижний график - с правильными. Подскажите пожалуйста где ошибка.https://ibb.co/Dpsnh1x
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import matplotlib.pyplot as plt
import numpy as np
 
 
def autocorr_func(t, gamma,  w0, S, w):
    arg = w0 * t * 1j - gamma * t
    for i in range(len(S)):
        arg += S[i] * (np.exp(1j * w[i] * t) - 1)
    return np.exp(arg, dtype=complex)
 
 
hrf_ = np.array(list(map(float, open("hrfactor.txt", 'r').readlines())))            # read "hrfactor.txt
freq_ = np.array(list(map(float, open("freq.txt", 'r').readlines()))) * 0.45216e-5  # read "freq.txt" [cm-1] to [a.u.]
w_eg = 29255.96 * 0.45216e-5 # [cm-1] to [a.u.]
 
 
fig1, (ax1, ax2) = plt.subplots(
    nrows=2, ncols=1,
    figsize=(12, 10)
)
 
delta_t = 4.134137333               # [a.u.] = 0.1 [fs]
N = int(1e5)                        # number of points
t = np.linspace(0, delta_t * N, N)  # time array [a.u.]
 
G_ab = autocorr_func(t, gamma=0.001, w0=w_eg, S=hrf_, w=freq_)  # in [a.u.]
 
yf = np.real(np.fft.fft(G_ab))[: N // 2]
xf = np.linspace(0.0, 1/(2.0 * delta_t), N // 2) / 0.45216e-5  # [a.u.] to [cm^-1]
 
ax1.plot(t, np.abs(G_ab))
ax1.set_ylabel("ABS(G_ab(t)")
ax1.set_xlabel("Time, a.u.")
 
ax2.plot(xf, yf)
ax2.set_ylabel("I_ab(w)")
ax2.set_xlabel("Wavenumber, cm^-1")
 
plt.show()
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.02.2020, 11:34
Ответы с готовыми решениями:

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

Смещение значения фазы при Дискретном Преобразовании Фурье (ДПФ)
Доброго времени суток! Я в теме ЦОС новичок и решил начать с малого - реализовать дискретное преобразование Фурье в Excel (ДПФ). Столкнулся...

Как сдвинуть фазу синусоиды при обратном дискретном преобразовании Фурье
Мне поможет любой вариант. Мои усилия выглядят так: for t = 1:64 s(t) = sum(sw.*exp(1i/64*(t-1).*2*pi*(0:63)-10*pi/180))/(2); end;...

5
19.02.2020, 08:29

Не по теме:

Зачем выкладывать код, который не запускается?
где необходимые файлы данных?

0
19.02.2020, 13:44

Не по теме:

Чел думает, что здесь только и занимаются тем, что Фурье во что-то преобразовывают...

0
533 / 438 / 47
Регистрация: 17.07.2013
Сообщений: 2,236
20.02.2020, 09:32
Цитата Сообщение от Garry Galler Посмотреть сообщение
Чел думает,
Пардон батенька, но Вы, однако, оптимист
0
20.02.2020, 12:49

Не по теме:

Цитата Сообщение от Nick07 Посмотреть сообщение
Вы, однако, оптимист
Я о ТС, если что. Так что оптимист - это явно он.

0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
23.02.2020, 13:02
По-моему, с точностью до растяжения графики одинаковые.

Цитата Сообщение от cyberturist Посмотреть сообщение
t = np.linspace(0, delta_t * N, N)  # time array [a.u.]
Отсюда получается, что delta_t - атомные единицы.

xf = np.linspace(0.0, 1/(2.0 * delta_t), N // 2) / 0.45216e-5 # [a.u.] to [cm^-1]
А тут нормально, что дельта в знаменателе? Размерность получается 1/ат /(ат * см) =1/(ат^2 * см), подозрительно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.02.2020, 13:02
Помогаю со студенческими работами здесь

Вопрос о преобразовании Фурье
Привет Никогда не сталкивался с этой темой, поэтому кому-то мой вопрос покажется очень простым (глупым). Есть набор коэффициентов...

Шаг в преобразовании Фурье
Здравствуйте, имеется вот код для БПФ. Мне желательно, чтобы частота Найквиста была 5*10^9, при этом шаг по частоте был равен 1кГц или,...

Смещение частот при Фурье-преобразовании
Всем добрый день! Совсем новичок в программирование и прошу помочь со следующим вопросом: - Есть вибросигнал с ротора. Частота...

Вычислить интеграл в обратном преобразовании Фурье
Здравствуйте. Посоветуйте, пожалуйста, метод, или программу, которая поможет мне в нахождении интеграла: $\frac{1}{\sqrt{2 \pi}}...

Разные результаты при Фурье преобразовании
Всем добрый день. Обнаружил разные результаты после Фурье преобразования, хотелось бы узнать почему. В общем, создаю отсчеты сигнала, как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru