aspcore.pseq

Functions associated with perfect periodic sequences

Such sequences are deterministic periodic sequences with an impulse as periodic autocorrelation. When used for system identification, which in an audio context often is room impulse response estimation, the deconvolution is particularly simple. For an ideal LTI system without noise, the impulse response can be identified perfectly after only one period of the signal, by cross-correlating the output signal with the perfect sequence. In addition, it is possible to identify the impulse response of a MISO system by using a shifted version of the same sequence for each source.

References

[antweilerNLMStype2008] C. Antweiler, A. Telle, and P. Vary, “NLMS-type system identification of MISO systems with shifted perfect sequences,” Proceedings of the International Workshop on Acoustic Echo and Noise Control (IWAENC), Seattle, WA, Sep. 2008.

[antweilerSystem2014] C. Antweiler, S. Kuehl, B. Sauert, and P. Vary, “System identification with perfect sequence excitation - efficient NLMS vs. inverse cyclic convolution,” in Speech Communication; 11. ITG Symposium, Sep. 2014, pp. 1–4.

[hahnSimultaneous2018] N. Hahn and S. Spors, “Simultaneous measurement of spatial room impulse responses from multiple sound sources using a continuously moving microphone,” in 2018 26th European Signal Processing Conference (EUSIPCO), Sep. 2018, pp. 2180–2184. doi: 10.23919/EUSIPCO.2018.8553532. [link]

Functions

create_pseq(seq_len)

Creates a perfect sweep with constant magnitude spectrum Adapted from MATLAB code by Aulis Telle, IND, 2008

create_pseq_lowfreq(seq_len, sr, max_pseq_freq)

Creates pseq with a maximum frequency to be used at a higher samplerate

create_shifted_pseq(pseq, num_channels, rir_len)

For system identification of MISO system, each source should be given a shifted version of the same sequence to be able to perfectly identify each channel.

decorrelate(sig, pseq[, v])

Can be used to identify a LTI system from a PSEQ input signal

verify_pseq(pseq[, plot, samples_to_show])

Used to verify that a sequence is a perfect sequence