Array signal processing
SignalAnalysis.Bartlett
— TypeFrequency-domain Bartlett beamformer.
SignalAnalysis.Capon
— TypeFrequency-domain Capon beamformer with diagonal loading factor γ
.
SignalAnalysis.Music
— TypeFrequency-domain MUSIC beamformer with nsignals
signals.
SignalAnalysis.beamform
— Methodbeamform(s, f, n, sd; fs=framerate(s), method=Bartlett())
+Array signal processing · SignalAnalysis.jl Array signal processing
SignalAnalysis.Bartlett
— TypeFrequency-domain Bartlett beamformer.
sourceSignalAnalysis.Capon
— TypeFrequency-domain Capon beamformer with diagonal loading factor γ
.
sourceSignalAnalysis.Music
— TypeFrequency-domain MUSIC beamformer with nsignals
signals.
sourceSignalAnalysis.beamform
— Methodbeamform(s, f, n, sd; fs=framerate(s), method=Bartlett())
beamform(s, f, sd; fs=framerate(s), method=Bartlett())
Narrowband frequency-domain beamformer. Takes in passband signals s
and produces beamformer output for all directions specified by the steering delays sd
. The beamformer output is an energy estimate (or equivalent) for each steering direction. The beamforming only uses a narrowband signal cenetered at frequency f
with a bandwidth of about fs/n
.
If n
is not specified, or is 1, then the input signal is assumed to be narrowband, and centered at frequency f
.
The narrowband assumption requires that the bandwidth be no greater than about 5/T, where T is the maximum time taken for a signal to propagate through the array.
Several beamforming methods are available:
Custom beamformers can be implemented by creating a subtype of SignalAnalysis.Beamformer
and implementing the SignalAnalysis.beamformer()
method dispatched on that type.
Example:
julia> x = cw(100.0, 1.0, 44100.0);
julia> sd = steering(0.0:1.0:3.0, 1500.0, range(0.0, π; length=181));
julia> bfo = beamform([x x x x], 100.0, 4096, sd; method=Capon(0.1))
@@ -7,11 +7,11 @@
0.12406290296318974
0.1240975045516605
⋮
- 0.12406290296318974
sourceSignalAnalysis.beamform
— Methodbeamform(s, sd; fs=framerate(s))
Broadband time-domain delay-and-sum beamformer. Takes in passband or baseband signals s
and produces beamformer output for all directions specified by the steering delays sd
. The beamformer output is a timeseries signal for each steering direction.
Example:
julia> x = cw(100.0, 1.0, 44100.0);
+ 0.12406290296318974
sourceSignalAnalysis.beamform
— Methodbeamform(s, sd; fs=framerate(s))
Broadband time-domain delay-and-sum beamformer. Takes in passband or baseband signals s
and produces beamformer output for all directions specified by the steering delays sd
. The beamformer output is a timeseries signal for each steering direction.
Example:
julia> x = cw(100.0, 1.0, 44100.0);
julia> sd = steering(0.0:1.0:3.0, 1500.0, range(0.0, π; length=181));
julia> bfo = beamform([x x x x], sd)
SampledSignal @ 44100.0 Hz, 44100×181 Array{Complex{Float64},2}:
- ⋮
sourceSignalAnalysis.steering
— Methodsteering(rxpos, c, θ)
+ ⋮
sourceSignalAnalysis.steering
— Methodsteering(rxpos, c, θ)
Computes steering delays for specified receiver positions rxpos
, signal propagation speed c
, and angles θ
. Array θ
can be a 1D array of angles or 2D array with (azimuth, elevation) pair in each row. The delays are computed with a far-field assumption, i.e., for plane incoming waves.
Examples:
julia> steering(0.0:1.0:5.0, 1500.0, range(0.0, π; length=181))
6×181 Array{Float64,2}:
0.00166667 0.00166641 … -0.00166641 -0.00166667
@@ -45,4 +45,4 @@
9.80987e-5 9.83857e-5 9.86427e-5 … 0.00021154 0.000210989 0.000210373
0.000210373 0.000210989 0.00021154 9.86427e-5 9.83857e-5 9.80987e-5
-0.000210373 -0.000210989 -0.00021154 -9.86427e-5 -9.83857e-5 -9.80987e-5
- -9.80987e-5 -9.83857e-5 -9.86427e-5 -0.00021154 -0.000210989 -0.000210373
sourceSettings
This document was generated with Documenter.jl version 1.5.0 on Monday 22 July 2024. Using Julia version 1.6.7.
+ -9.80987e-5 -9.83857e-5 -9.86427e-5 -0.00021154 -0.000210989 -0.000210373