Periodograms — расчет периодограмм
#
DSP.Periodograms.arraysplit — Function
arraysplit(s, n, m)
Разделяет массив на массивы длиной n с перекрывающимися областями длиной m. При итерации по возвращенному объекту AbstractVector или обращении к нему по индексам всегда выдается тот же объект Vector, но с другим содержимым.
#
DSP.Periodograms.periodogram — Method
periodogram(s; onesided=eltype(s)<:Real, nfft=nextfastfft(n), fs=1, window=nothing)
Вычисляет периодограмму сигнала посредством БПФ и возвращает объект Periodogram.
Для вещественных сигналов двусторонняя периодограмма является симметричной, и эта функция по умолчанию возвращает одностороннюю (только вещественную) периодограмму. Двустороннюю периодограмму можно получить, задав onesided=false.
nfft определяет количество точек, используемых для преобразования Фурье. Если length(s) < nfft, входные данные дополняются нулями. По умолчанию nfft — это ближайший размер, для которого преобразование Фурье можно вычислить с максимальной эффективностью.
fs — это частота дискретизации исходного сигнала, а window — необязательная функция окна или вектор, применяемые к исходному сигналу перед вычислением преобразования Фурье. Рассчитанная периодограмма нормализуется так, что область ниже нее была равна нецентрированному отклонению (или средней мощности) исходного сигнала.
#
DSP.Periodograms.welch_pgram — Function
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.
#
DSP.Periodograms.spectrogram — Function
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.
#
DSP.Periodograms.stft — Function
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 можно найти описание необязательных именованных аргументов.
#
DSP.Periodograms.periodogram — Method
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'| учитываются неквадратные сигналы путем соответствующего масштабирования координат волнового вектора.
#
DSP.Periodograms.freq — Function
freq(p)
Возвращает центры элементов разрешения по частоте для данного объекта Periodogram, Spectrogram, CrossPowerSpectra или Coherence.
Возвращает кортеж центров элементов разрешения по частоте для данного объекта Periodogram2 .
#
DSP.Periodograms.power — Function
power(p)
Для объекта Periodogram возвращает вычисленную мощность при каждой частоте в виде вектора.
Для объекта Spectrogram возвращает вычисленную мощность при каждой частоте и для каждого элемента разрешения по времени в виде матрицы. Измерения — частота × время.
Для объекта CrossPowerSpectra возвращает попарную мощность между каждой парой каналов при каждой частоте. Измерения — канал x канал x частота.
#
Base.Libc.time — Function
time(p)
Возвращает центры элементов разрешения по времени для данного объекта Spectrogram.
#
DSP.Periodograms.coherence — Function
coherence(c::Coherence)
Для объекта Coherence возвращает массив n_channels x n_channels x length(freq(c)), состоящий из попарных значений когерентности между каждым каналом для каждой частоты.
Расчет периодограмм с множественным заострением
#
DSP.Periodograms.mt_pgram — Function
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.
#
DSP.Periodograms.mt_pgram! — Function
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.
#
DSP.Periodograms.mt_spectrogram — Function
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!.
#
DSP.Periodograms.mt_spectrogram! — Function
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)xlength(config.time). Может быть создана с помощьюDSP.allocate_output(config). -
signal: вектор длиныconfig.n_samples -
config: можно передать объектMTSpectrogramConfigдля хранения временных переменных и параметров конфигурации. В противном случае аргументы с параметрами можно передать напрямую.
Возвращает объект Spectrogram.
См. также описание mt_spectrogram.
#
DSP.Periodograms.mt_cross_power_spectra — Function
mt_cross_power_spectra(signal::AbstractMatrix{T}; fs=1, kwargs...) where {T}
mt_cross_power_spectra(signal::AbstractMatrix, config::MTCrossSpectraConfig)
Вычисляет взаимные спектральные плотности с множественным заострением между каналами сигнала. Аргументы:
-
signal:n_channelsxn_samples -
Можно также передать объект
MTCrossSpectraConfigдля предварительного выделения памяти для временных переменных
и выбора параметров конфигурации. В противном случае здесь можно передать любые именованные аргументы, принимаемые MTCrossSpectraConfig.
Создает объект CrossPowerSpectra, содержащий выходной массив n_channels x n_channels x n_frequencies (к которому обращается power) и соответствующие частоты (к которым обращается freq).
См. также описание mt_cross_power_spectra! и MTCrossSpectraConfig.
#
DSP.Periodograms.mt_cross_power_spectra! — Function
mt_cross_power_spectra!(output, signal::AbstractMatrix; fs=1, kwargs...)
mt_cross_power_spectra!(output, signal::AbstractMatrix, config::MTCrossSpectraConfig)
Вычисляет взаимные спектральные плотности с множественным заострением между каналами сигнала. Аргументы:
-
output:n_channelsxn_channelsxlength(config.freq). Можно создать с помощьюDSP.allocate_output(config). -
signal:n_channelsxn_samples -
config:MTCrossSpectraConfig{T}: можно передать объектMTCrossSpectraConfigдля предварительного выделения памяти для временных переменных и выбора параметров конфигурации. В противном случае можно передать любые именованные аргументы, принимаемые этим объектом.
Создает объект CrossPowerSpectra, содержащий выходной массив n_channels x n_channels x n_frequencies и соответствующие частоты (к которым обращается freq).
См. также описание mt_cross_power_spectra и MTCrossSpectraConfig.
#
DSP.Periodograms.mt_coherence — Function
mt_coherence(signal::AbstractMatrix{T}; fs=1, freq_range = nothing, demean=false, kwargs...) where T
mt_coherence(signal::AbstractMatrix, config::MTCoherenceConfig)
Аргументы:
-
signal: матрицаn_channelsxn_samples -
Можно передать объект
MTCoherenceConfigдля предварительного выделения памяти для временных переменных и выбора параметров конфигурации; в противном случае см. значение именованных аргументов в описанииMTCrossSpectraConfig.
Возвращает объект Coherence.
См. также описание mt_coherence и MTCoherenceConfig.
#
DSP.Periodograms.mt_coherence! — Function
mt_coherence!(output, signal::AbstractMatrix; fs=1, freq_range=nothing, demean=false, kwargs...)
mt_coherence!(output, signal::AbstractMatrix, config::MTCoherenceConfig)
Вычисляет попарные значения когерентности между каналами.
-
output: матрицаn_channelsxn_channels -
signal: матрицаn_samplesxn_channels -
config: необязательный объект конфигурации для предварительного выделения памяти для временных переменных и выбора параметров.
Возвращает объект Coherence.
См. также описание mt_coherence и MTCoherenceConfig.
Объекты конфигурации
#
DSP.Periodograms.MTConfig — Type
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: флаги, определяющие то, как генерируется план БПФ.
#
DSP.Periodograms.MTSpectrogramConfig — Type
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.
#
DSP.Periodograms.MTCrossSpectraConfig — Type
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.
#
DSP.Periodograms.MTCoherenceConfig — Type
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!.