Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить