← Назад к вопросам

Что такое частота дискретизации?

2.2 Middle🔥 62 комментариев
#Временные ряды

Комментарии (2)

🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Частота дискретизации (Sampling Rate): Полное объяснение

Частота дискретизации (Sampling Rate или Sample Rate) — это количество раз в секунду, с которой непрерывный аналоговый сигнал берётся (измеряется) и преобразуется в цифровой сигнал. Это фундаментальный концепт в цифровой обработке сигналов, аудиотехнике и машинном обучении при работе с временными рядами и аудиоданными.

Единицы измерения

Частота дискретизации измеряется в герцах (Герц, Hz) или килогерцах (кГц, kHz):

  • 1 Hz = 1 отсчёт в секунду
  • 1 kHz = 1000 отсчётов в секунду

Если частота дискретизации 44100 Hz, это означает, что сигнал измеряется 44100 раз в секунду.

Теорема Найквиста-Шеннона

Фундаментальное правило в цифровой обработке сигналов:

Частота дискретизации должна быть минимум в два раза больше максимальной частоты сигнала (граничной частоты).

fs >= 2 * fmax

Где:

  • fs — частота дискретизации
  • fmax — максимальная частота в сигнале

Примеры:

  • Человеческий слух воспринимает звуки от 20 Hz до 20000 Hz, поэтому для аудио нужна частота дискретизации минимум 40000 Hz (обычно 44100 или 48000 Hz)
  • Телефонный сигнал ограничен 4000 Hz, поэтому используется 8000 Hz дискретизации

Стандартные частоты дискретизации

Применение              Частота дискретизации
─────────────────────────────────────────────
Телефон                 8 kHz
Видео (24-25fps)        25-30 Hz
Аудио (низкое качество) 22.05 kHz
Аудио (CD)              44.1 kHz
Аудио (профессиональное) 48 kHz
Аудио (студийное)       96 kHz
Аудио (мастеринг)       192 kHz
Медицина (ЭКГ)          100-500 Hz

Практические примеры на Python

Работа с аудиофайлами

import librosa
import numpy as np
import soundfile as sf
from scipy import signal

# Загрузка аудиофайла
audio_path = 'example.wav'
y, sr = librosa.load(audio_path)  # y - сигнал, sr - частота дискретизации

print(f"Частота дискретизации: {sr} Hz")
print(f"Длительность аудио: {len(y) / sr:.2f} сек")
print(f"Количество отсчётов: {len(y)}")

# Создание синусоидального сигнала
duration = 2  # секунды
sr = 44100  # Hz
freq = 440  # Hz (нота A4)
t = np.linspace(0, duration, int(sr * duration), endpoint=False)
y = np.sin(2 * np.pi * freq * t)

# Сохранение аудиофайла
sf.write('output.wav', y, sr)

Перевыборка (Resampling)

Изменение частоты дискретизации:

import librosa

# Загрузить с исходной частотой
y, sr = librosa.load('audio.wav', sr=None)  # sr=None загружает с исходной частотой
print(f"Исходная частота: {sr} Hz")

# Перевыборка на новую частоту
sr_new = 22050  # уменьшение с 44100 на 22050
y_resampled = librosa.resample(y, orig_sr=sr, target_sr=sr_new)

print(f"Новая частота: {sr_new} Hz")
print(f"Новое количество отсчётов: {len(y_resampled)}")

Эффект недостаточной дискретизации (Aliasing)

Когда частота сигнала превышает частоту Найквиста, возникает aliasing:

import matplotlib.pyplot as plt
import numpy as np

sr = 1000  # Hz (частота Найквиста = 500 Hz)
freq = 600  # Hz (выше частоты Найквиста!)
t = np.linspace(0, 1, sr, endpoint=False)

# Исходный непрерывный сигнал (высокочастотный)
t_continuous = np.linspace(0, 1, 10000)
y_continuous = np.sin(2 * np.pi * freq * t_continuous)

# Дискретизированный сигнал
y_sampled = np.sin(2 * np.pi * freq * t)

plt.figure(figsize=(12, 4))
plt.plot(t_continuous, y_continuous, label='Исходный сигнал', alpha=0.7)
plt.scatter(t[:100], y_sampled[:100], color='red', label='Отсчёты (aliased)', zorder=5)
plt.xlabel('Время (сек)')
plt.ylabel('Амплитуда')
plt.title(f'Aliasing: сигнал {freq}Hz дискретизирован на {sr}Hz')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()

Взаимосвязь параметров

Разрешение времени

sr = 44100  # Hz
duration = 10  # секунды
total_samples = sr * duration
time_resolution = 1 / sr  # секунды между отсчётами

print(f"Разрешение по времени: {time_resolution * 1000:.4f} мс")
print(f"Всего отсчётов в {duration} сек: {total_samples}")

Чем выше частота дискретизации, тем выше разрешение по времени.

Объём данных

sr = 44100  # Hz (CD качество)
bits_per_sample = 16  # бит (обычно 16 или 24)
channels = 2  # стерео
duration = 3600  # 1 час

bytes_per_second = (sr * bits_per_sample * channels) // 8
file_size_mb = (bytes_per_second * duration) / (1024 * 1024)

print(f"Размер файла 1 часа аудио: {file_size_mb:.1f} МБ")

Временные ряды в машинном обучении

Для работы с временными рядами важно правильно выбрать частоту дискретизации:

import pandas as pd

# Загрузка временного ряда
df = pd.read_csv('timeseries.csv', parse_dates=['timestamp'])
df.set_index('timestamp', inplace=True)

# Проверка частоты дискретизации
inferred_freq = pd.infer_freq(df.index)
print(f"Инфер информированная частота: {inferred_freq}")

# Переиндексирование на новую частоту
df_resampled = df.resample('1H').mean()  # Агрегация по часам

# Интерполяция недостающих значений
df_interpolated = df.resample('1T').interpolate()  # На 1 минуту

Влияние на качество

Высокая частота дискретизации (плюсы):

  • Более точное воспроизведение высокочастотных компонентов
  • Лучше предотвращает aliasing
  • Лучше работает для критичных приложений

Высокая частота дискретизации (минусы):

  • Больше данных → больше памяти и вычислений
  • Медленнее обработка
  • Более требовательна к вычислительным ресурсам

Низкая частота дискретизации (плюсы):

  • Меньше данных → быстрее обработка
  • Экономия памяти и пропускной способности

Низкая частота дискретизации (минусы):

  • Риск потери информации
  • Aliasing артефакты
  • Ниже качество

Практический выбор частоты

def recommend_sampling_rate(max_frequency):
    """
    Рекомендовать частоту дискретизации
    на основе максимальной частоты сигнала
    """
    nyquist_rate = 2 * max_frequency
    # На практике используем ~1.1x от Найквиста для margin
    recommended_rate = nyquist_rate * 1.1
    return recommended_rate

# Пример
max_freq = 10000  # Hz
recommended = recommend_sampling_rate(max_freq)
print(f"Рекомендуемая частота для сигнала до {max_freq}Hz: {recommended:,.0f}Hz")

Частота дискретизации — критический параметр, определяющий качество и объём цифровых данных. Правильный выбор баланса между точностью и производительностью является ключом к успешной обработке сигналов и анализу данных.

Что такое частота дискретизации? | PrepBro