czt
Чирп Z-преобразование.
| Библиотека |
|
Аргументы
Входные аргументы
#
x —
входной сигнал
вектор | матрица | трехмерный массив
Details
Входной сигнал, заданный как вектор, матрица или трехмерный массив. Если x — матрица, функция преобразует столбцы x. Если x — трехмерный массив, функция работает с первым измерением массива, размер которого больше 1.
| Типы данных |
|
| Поддержка комплексных чисел |
Да |
#
m —
длина преобразования
length(x) (по умолчанию) | положительный целочисленный скаляр
Details
Длина преобразования, заданная как положительный целочисленный скаляр.
| Типы данных |
|
#
w —
отношение между точками спирального контура
exp(-2im*π/m) (по умолчанию) | комплексный скаляр
Details
Отношение между точками спирального контура, заданное как комплексный скаляр.
| Типы данных |
|
| Поддержка комплексных чисел |
Да |
#
a —
начальная точка спирального контура
1 (по умолчанию) | комплексный скаляр
Details
Начальная точка спирального контура, заданная как комплексный скаляр.
| Типы данных |
|
| Поддержка комплексных чисел |
Да |
Выходные аргументы
#
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 использует БПФ длины, равной следующей степени двойки, для выполнения быстрой свертки при вычислении Z-преобразования на заданном контуре чирпа [1].