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

Periodograms — расчет периодограмм

arraysplit(s, n, m)

Разделяет массив на массивы длиной n с перекрывающимися областями длиной m. При итерации по возвращенному объекту AbstractVector или обращении к нему по индексам всегда выдается тот же объект Vector, но с другим содержимым.

periodogram(s; onesided=eltype(s)<:Real, nfft=nextfastfft(n), fs=1, window=nothing)

Вычисляет периодограмму сигнала посредством БПФ и возвращает объект Periodogram.

Для вещественных сигналов двусторонняя периодограмма является симметричной, и эта функция по умолчанию возвращает одностороннюю (только вещественную) периодограмму. Двустороннюю периодограмму можно получить, задав onesided=false.

nfft определяет количество точек, используемых для преобразования Фурье. Если length(s) < nfft, входные данные дополняются нулями. По умолчанию nfft — это ближайший размер, для которого преобразование Фурье можно вычислить с максимальной эффективностью.

fs — это частота дискретизации исходного сигнала, а window — необязательная функция окна или вектор, применяемые к исходному сигналу перед вычислением преобразования Фурье. Рассчитанная периодограмма нормализуется так, что область ниже нее была равна нецентрированному отклонению (или средней мощности) исходного сигнала.

welch_pgram(s, n=div(length(s), 8), noverlap=div(n, 2); onesided=eltype(s)<:Real, nfft=nextfastfft(n), fs=1, window=nothing)

Вычисляет периодограмму Велча для сигнала s на основе отрезков из n отсчетов с перекрытием в noverlap отсчетов и возвращает объект Periodogram. Для периодограммы Бартлетта задайте noverlap=0. Сведения о необязательных именованных аргументах см. в описании метода periodogram.

spectrogram(s, n=div(length(s), 8), noverlap=div(n, 2); onesided=eltype(s)<:Real, nfft=nextfastfft(n), fs=1, window=nothing)

Вычисляет спектрограмму сигнала s на основе отрезков из n отсчетов с перекрытием в noverlap отсчетов и возвращает объект Spectrogram. Сведения о необязательных именованных аргументах см. в описании метода periodogram.

stft(s, n=div(length(s), 8), noverlap=div(n, 2); onesided=eltype(s)<:Real, nfft=nextfastfft(n), fs=1, window=nothing)

Вычисляет кратковременное преобразование Фурье (КВПФ) для сигнала s на основе отрезков из n отсчетов с перекрытием в noverlap отсчетов и возвращает матрицу, содержащую коэффициенты КВПФ. В описании метода periodogram можно найти описание необязательных именованных аргументов.

periodogram(s::AbstractMatrix; nfft=nextfastfft(size(s)), fs=1, radialsum=false, radialavg=false)

Вычисляет периодограмму двухмерного сигнала посредством БПФ и возвращает объект Periodogram2.

По умолчанию возвращает двухмерную периодограмму. В виде объекта Periodogram возвращается радиально суммированная или усредненная периодограмма, если соответственно radialsum или radialavg имеет значение true.

nfft определяет количество точек, используемых для преобразования Фурье. Если size(s) < nfft, входные данные дополняются нулями. По умолчанию nfft — это ближайший размер, для которого преобразование Фурье можно вычислить с максимальной эффективностью. fs — это частота дискретизации исходного сигнала в обоих направлениях.

При radialsum=true значение power[k] пропорционально

При radialavg=true оно пропорционально

При вычислении |k'| учитываются неквадратные сигналы путем соответствующего масштабирования координат волнового вектора.

freq(p)

Возвращает центры элементов разрешения по частоте для данного объекта Periodogram, Spectrogram, CrossPowerSpectra или Coherence.

Возвращает кортеж центров элементов разрешения по частоте для данного объекта Periodogram2 .

power(p)

Для объекта Periodogram возвращает вычисленную мощность при каждой частоте в виде вектора.

Для объекта Spectrogram возвращает вычисленную мощность при каждой частоте и для каждого элемента разрешения по времени в виде матрицы. Измерения — частота × время.

Для объекта CrossPowerSpectra возвращает попарную мощность между каждой парой каналов при каждой частоте. Измерения — канал x канал x частота.

time(p)

Возвращает центры элементов разрешения по времени для данного объекта Spectrogram.

coherence(c::Coherence)

Для объекта Coherence возвращает массив n_channels x n_channels x length(freq(c)), состоящий из попарных значений когерентности между каждым каналом для каждой частоты.

Расчет периодограмм с множественным заострением

mt_pgram(s; onesided=eltype(s)<:Real, nfft=nextfastfft(n), fs=1, nw=4, ntapers=iceil(2nw)-1, window=dpss(length(s), nw, ntapers))
mt_pgram(signal::AbstractVector, config::MTConfig)

Вычисляет периодограмму с множественным заострением для сигнала s.

Если window не задано, сигнал заостряется посредством ntapers дискретных последовательностей вытянутых сфероидов с произведением длительности на ширину полосы nw. Каждая последовательность является равновзвешенной; адаптивное множественное заострение (пока) не поддерживается.

Если window задано, каждый столбец применяется в качестве заострения. Сумма периодограмм нормализуется по общей сумме квадратов window.

Возвращает объект Periodogram.

См. также описание mt_pgram! и MTConfig.

mt_pgram!(output, s::AbstractVector{T}; onesided::Bool=eltype(s)<:Real,
    nfft::Int=nextfastfft(length(s)), fs::Real=1,
    nw::Real=4, ntapers::Int=ceil(Int, 2nw)-1,
    window::Union{AbstractMatrix,Nothing}=nothing) where T<:Number
mt_pgram!(output::AbstractVector, signal::AbstractVector, config::MTConfig) -> Periodogram

Вычисляет периодограмму с множественным заострением, сохраняя выходные данные в output. Аргументы:

  • signal::AbstractVector: должен иметь длину config.n_samples

  • output::AbstractVector: должен иметь длину length(config.freq)

Можно также передать объект MTConfig для предварительного выделения памяти для временных переменных и выбора параметров конфигурации; в противном случае для выбора этих параметров можно передать именованные аргументы.

Возвращает объект Periodogram.

См. также описание mt_pgram и MTConfig.

mt_spectrogram(signal::AbstractVector{T}, n::Int=length(s) >> 3,
                              n_overlap::Int=n >> 1; fs=1,
                              onesided::Bool=T <: Real, kwargs...) where {T}
mt_spectrogram(signal::AbstractVector, config::MTSpectrogramConfig)

Вычисляет спектрограмму с множественным заострением и возвращает объект Spectrogram. Можно также передать объект MTSpectrogramConfig; в противном случае для настройки заострения можно передать любые именованные аргументы, принимаемые MTConfig.

Возвращает объект Spectrogram.

См. также описание mt_spectrogram!.

mt_spectrogram!(output, signal::AbstractVector{T}, n::Int=length(signal) >> 3,
    n_overlap::Int=n >> 1; fs=1, onesided::Bool=T <: Real, kwargs...) where {T}
mt_spectrogram!(destination::AbstractMatrix, signal::AbstractVector, config::MTSpectrogramConfig)

Вычисляет спектрограмму с множественным заострением с использованием параметров, заданных в config. Аргументы:

  • destination: матрица length(config.mt_config.freq) x length(config.time). Может быть создана с помощью DSP.allocate_output(config).

  • signal: вектор длины config.n_samples

  • config: можно передать объект MTSpectrogramConfig для хранения временных переменных и параметров конфигурации. В противном случае аргументы с параметрами можно передать напрямую.

Возвращает объект Spectrogram.

См. также описание mt_spectrogram.

mt_cross_power_spectra(signal::AbstractMatrix{T}; fs=1, kwargs...) where {T}
mt_cross_power_spectra(signal::AbstractMatrix, config::MTCrossSpectraConfig)

Вычисляет взаимные спектральные плотности с множественным заострением между каналами сигнала. Аргументы:

  • signal: n_channels x n_samples

  • Можно также передать объект MTCrossSpectraConfig для предварительного выделения памяти для временных переменных

и выбора параметров конфигурации. В противном случае здесь можно передать любые именованные аргументы, принимаемые MTCrossSpectraConfig.

Создает объект CrossPowerSpectra, содержащий выходной массив n_channels x n_channels x n_frequencies (к которому обращается power) и соответствующие частоты (к которым обращается freq).

См. также описание mt_cross_power_spectra! и MTCrossSpectraConfig.

mt_cross_power_spectra!(output, signal::AbstractMatrix; fs=1, kwargs...)
mt_cross_power_spectra!(output, signal::AbstractMatrix, config::MTCrossSpectraConfig)

Вычисляет взаимные спектральные плотности с множественным заострением между каналами сигнала. Аргументы:

  • output: n_channels x n_channels x length(config.freq). Можно создать с помощью DSP.allocate_output(config).

  • signal: n_channels x n_samples

  • config: MTCrossSpectraConfig{T}: можно передать объект MTCrossSpectraConfig для предварительного выделения памяти для временных переменных и выбора параметров конфигурации. В противном случае можно передать любые именованные аргументы, принимаемые этим объектом.

Создает объект CrossPowerSpectra, содержащий выходной массив n_channels x n_channels x n_frequencies и соответствующие частоты (к которым обращается freq).

См. также описание mt_cross_power_spectra и MTCrossSpectraConfig.

mt_coherence(signal::AbstractMatrix{T}; fs=1, freq_range = nothing, demean=false, kwargs...) where T
mt_coherence(signal::AbstractMatrix, config::MTCoherenceConfig)

Аргументы:

  • signal: матрица n_channels x n_samples

  • Можно передать объект MTCoherenceConfig для предварительного выделения памяти для временных переменных и выбора параметров конфигурации; в противном случае см. значение именованных аргументов в описании MTCrossSpectraConfig.

Возвращает объект Coherence.

См. также описание mt_coherence и MTCoherenceConfig.

mt_coherence!(output, signal::AbstractMatrix; fs=1, freq_range=nothing, demean=false, kwargs...)
mt_coherence!(output, signal::AbstractMatrix, config::MTCoherenceConfig)

Вычисляет попарные значения когерентности между каналами.

  • output: матрица n_channels x n_channels

  • signal: матрица n_samples x n_channels

  • config: необязательный объект конфигурации для предварительного выделения памяти для временных переменных и выбора параметров.

Возвращает объект Coherence.

См. также описание mt_coherence и MTCoherenceConfig.

Объекты конфигурации

MTConfig{T}(n_samples; fs=1,
        nfft = nextpow(2, n_samples),
        window = nothing,
        nw = 4,
        ntapers = 2 * nw - 1,
        taper_weights = fill(1/ntapers, ntapers),
        onesided::Bool=T<:Real,
        fft_flags = FFTW.MEASURE)

Создает объект конфигурации, который содержит состояние конфигурации и временные переменные, используемые при вычислении множественного заострения, например mt_pgram!, mt_spectrogram, MTSpectrogramConfig, MTCrossSpectraConfig и MTCoherenceConfig.

Объект MTConfig можно использовать при вычислениях повторно, если входные аргументы не меняются.

  • n_samples: количество отсчетов, используемых в качестве входных данных при вычислении периодограмм с множественным заострением с этой конфигурацией. Используется для предварительного выделения памяти для временных буферов.

  • fs: количество отсчетов входного сигнала в секунду

  • nfft: длина входного вектора для БПФ; если nfft > n_samples, входной сигнал дополняется нулями до длины nfft.

  • window: функция окна для множественного заострения. При значении по умолчанию nothing в качестве window задается dpss(n_samples, nw, ntapers).

  • ntapers: количество используемых заострений.

  • taper_weights = fill(1/ntapers, ntapers): способ взвешивания доли каждого заострения. По умолчанию производится усреднение.

  • onesided: следует ли вычислять «одностороннее» БПФ исходя из того, что данные вещественного сигнала образуют сопряженную симметрию в пространстве Фурье.

  • fft_flags: флаги, определяющие то, как генерируется план БПФ.

MTSpectrogramConfig(n_samples, mt_config::MTConfig{T}, n_overlap_samples) where {T}
MTSpectrogramConfig{T}(n_samples, samples_per_window, n_overlap_samples; fs=1, kwargs...) where {T}

Создает объект MTSpectrogramConfig, содержащий конфигурацию и временные переменные для mt_spectrogram и mt_spectrogram!. Здесь можно передать любые именованные аргументы, принимаемые MTConfig, или сам объект MTConfig.

MTCrossSpectraConfig{T}(n_channels, n_samples; fs=1, demean=false, freq_range=nothing,
                        ensure_aligned = T == Float32 || T == Complex{Float32}, kwargs...) where {T}
MTCrossSpectraConfig(n_channels, mt_config::MTConfig{T}; demean=false, freq_range=nothing,
                     ensure_aligned = T == Float32 || T == Complex{Float32})

Создает объект конфигурации, используемый для mt_cross_power_spectra и mt_cross_power_spectra!.

  • n_channels: количество входных каналов.

  • n_samples: количество отсчетов для каждого входного канала.

  • demean: при значении true перед вычислением взаимных спектральных плотностей из входных сигналов вычитается поканальное среднее.

  • freq_range: при значении nothing сохраняются все частоты. В противном случае сохраняются только частоты между first(freq_range) и last(freq_range).

  • ensure_aligned = T == Float32 || T == Complex{Float32}: выполняет дополнительное копирование для выравнивания результата БПФ в памяти.

  • Дополнительно можно передать либо объект MTConfig, либо именованные аргументы, принимаемые MTConfig, например fs.

Возвращает объект CrossPowerSpectra.

MTCoherenceConfig{T}(n_channels, n_samples; fs=1, demean=false, freq_range=nothing, kwargs...) where T
MTCoherenceConfig(cs_config::MTCrossSpectraConfig{T}) where {T}
MTCoherenceConfig(n_channels, mt_config::MTConfig{T}; demean=false, freq_range=nothing,
    ensure_aligned = T == Float32 || T == Complex{Float32}) where {T}

Создает объект конфигурации для значений когерентности из MTCrossSpectraConfig. Предоставляет вспомогательный метод с теми же аргументами, что и у MTCrossSpectraConfig, для создания объекта MTCrossSpectraConfig.

См. также описание mt_coherence и mt_coherence!.