Документация Engee

czt

Чирп Z-преобразование.

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • y = czt(x,m,w,a) — возвращает чирп Z-преобразование (Chirp Z-Transform, CZT) длиной m входного сигнала x вдоль спирального контура на плоскости , определяемого аргументами w и a с помощью z = a*w.^−(0:m−1).

    При значениях m, w и a по умолчанию функция czt возвращает Z-преобразование сигнала x в m равноудаленных точках единичной окружности, что эквивалентно дискретному преобразованию Фурье (ДПФ) x, заданному выражением fft(x).

Аргументы

Входные аргументы

# x — входной сигнал
вектор | матрица | трехмерный массив

Details

Входной сигнал, заданный как вектор, матрица или трехмерный массив. Если x — матрица, функция преобразует столбцы x. Если x — трехмерный массив, функция работает с первым измерением массива, размер которого больше 1.

Типы данных

Float32, Float64

Поддержка комплексных чисел

Да

# m — длина преобразования
length(x) (по умолчанию) | положительный целочисленный скаляр

Details

Длина преобразования, заданная как положительный целочисленный скаляр.

Типы данных

Float32, Float64

# w — отношение между точками спирального контура
exp(-2im*π/m) (по умолчанию) | комплексный скаляр

Details

Отношение между точками спирального контура, заданное как комплексный скаляр.

Типы данных

Float32, Float64

Поддержка комплексных чисел

Да

# a — начальная точка спирального контура
1 (по умолчанию) | комплексный скаляр

Details

Начальная точка спирального контура, заданная как комплексный скаляр.

Типы данных

Float32, Float64

Поддержка комплексных чисел

Да

Выходные аргументы

# y — чирп Z-преобразование
вектор | матрица

Details

Чирп Z-преобразование, возвращаемое в виде вектора или матрицы.

Примеры

CZT случайного вектора

Details

Создадим случайный вектор x длиной 1013. Вычислим его ДПФ с помощью функции czt.

import EngeeDSP.Functions: randn, czt

using Random
Random.seed!(1234)

x = randn(1013, 1)
y = czt(x)

Узкополосный участок частотной характеристики

Details

Используем функцию czt для увеличения узкополосного участка частотной характеристики фильтра.

Спроектируем КИХ-фильтр нижних частот 30-го порядка, используя метод окна. Зададим частоту дискретизации 1 кГц и частоту среза 125 Гц. Используем прямоугольное окно. Найдем передаточную функцию фильтра.

import EngeeDSP.Functions: fir1, rectwin

fs = 1000
h = fir1(30, 125 / (fs/2), rectwin(31))

Вычислим ДПФ и CZT фильтра. Ограничим частотный диапазон CZT полосой от 75 до 175 Гц. Сгенерируем 1024 отсчета в каждом случае.

import EngeeDSP.Functions: fft, czt

m = 1024
y = fft(h, m)

f1 = 75
f2 = 175
w = exp(-im * 2π * (f2 - f1) / (m * fs))
a = exp(im * 2π * f1 / fs)
z = czt(h, m, w, a)

Построим графики преобразований. Увеличим интересующую область.

fn = (0:m-1) ./ m
fy = fs .* fn
fz = (f2 - f1) .* fn .+ f1

plot(fy, abs.(y), label="FFT")
plot!(fz, abs.(z), label="CZT")
xlims!(50, 200)
xlabel!("Frequency (Hz)")

czt

Алгоритмы

Функция czt использует БПФ длины, равной следующей степени двойки, для выполнения быстрой свертки при вычислении Z-преобразования на заданном контуре чирпа [1].

Литература

  1. Rabiner, Lawrence R., and Bernard Gold. Theory and Application of Digital Signal Processing. Englewood Cliffs, NJ: Prentice-Hall, 1975.