РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
289 of 769 menu

Функция rfftfreq

Функция torch.fft.rfftfreq вычисляет частоты дискретизации для одномерного вещественного быстрого преобразования Фурье (БПФ). Она возвращает одномерный тензор, содержащий частоты, соответствующие коэффициентам, возвращаемым функцией rfft. Первым параметром передаётся размер окна n (количество отсчётов), вторым параметром можно указать шаг дискретизации d (по умолчанию равен 1). Тип данных возвращаемого тензора - torch.float32 или torch.float64.

Синтаксис

torch.fft.rfftfreq(n, d=1.0, dtype=None, device=None)

Параметры

Основные параметры функции:

  • n - длина окна (количество точек во временной области).
  • d - шаг дискретизации (расстояние между отсчётами), по умолчанию равен 1.
  • dtype - желаемый тип данных результата (по умолчанию torch.float32).
  • device - устройство, на котором будет создан тензор (по умолчанию текущее устройство).

Пример

Давайте вычислим частоты для 8 отсчётов с шагом дискретизации 1:

import torch freqs = torch.fft.rfftfreq(8) print(freqs)

Результат выполнения кода:

tensor([0.0000, 0.1250, 0.2500, 0.3750, 0.5000])

Обратите внимание, что количество частот равно n // 2 + 1 (для чётного n), что соответствует количеству коэффициентов, возвращаемых функцией rfft.

Пример

Теперь вычислим частоты для 10 отсчётов с шагом дискретизации 0.5:

import torch freqs = torch.fft.rfftfreq(10, d=0.5) print(freqs)

Результат выполнения кода:

tensor([0.0000, 0.1000, 0.2000, 0.3000, 0.4000, 0.5000])

При увеличении шага дискретизации частоты становятся меньше, так как максимальная частота (частота Найквиста) равна 1 / (2 * d).

Пример

Используем rfftfreq вместе с rfft для визуализации спектра сигнала:

import torch # Создаём сигнал (сумма двух синусоид) t = torch.linspace(0, 1, 100) signal = torch.sin(2 * torch.pi * 5 * t) + 0.5 * torch.sin(2 * torch.pi * 12 * t) # Выполняем вещественное БПФ spectrum = torch.fft.rfft(signal) freqs = torch.fft.rfftfreq(100, d=t[1] - t[0]) # Выводим первые несколько частот и амплитуд print("Частоты:", freqs[:10]) print("Амплитуды:", torch.abs(spectrum[:10]))

Результат выполнения кода:

Частоты: tensor([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.]) Амплитуды: tensor([1.1796, 1.2807, 0.9519, 0.7678, 0.7957, 47.7950, 0.8033, 0.7805, 0.9384, 1.2235])

На частотах 5 и 12 Гц наблюдаются пики амплитуды, что соответствует частотам синусоид в сигнале.

Смотрите также

  • функцию rfft,
    которая выполняет одномерное вещественное БПФ
  • функцию fftfreq,
    которая вычисляет частоты для двустороннего БПФ
  • функцию irfft,
    которая выполняет обратное вещественное БПФ
  • функцию fftshift,
    которая смещает нулевую частоту в центр спектра
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить