diff --git a/Virtual Sensing/Remote Microphone Technique/MATLAB/Functions/obsFiltTD.m b/Virtual Sensing/Remote Microphone Technique/MATLAB/Functions/obsFiltTD.m index 49b3b4c59d4b4bb76428fcd40facba10fdd1c029..77ecd8770ab075a325f4e3b7291ba51b5a1a191b 100644 --- a/Virtual Sensing/Remote Microphone Technique/MATLAB/Functions/obsFiltTD.m +++ b/Virtual Sensing/Remote Microphone Technique/MATLAB/Functions/obsFiltTD.m @@ -3,7 +3,7 @@ % Author: Achilles Kappis % e-mail: axilleaz@protonmail.com % -% Date: 14/09/2024 (DD/MM/YYYY) +% Date: 15/09/2024 (DD/MM/YYYY) % % Copyright: MIT % -------------------------------------------------- @@ -86,6 +86,12 @@ % RmmMtx [numeric]: This is the matrix with the cross-correlation matrices % of the monitoring microphone signals stacked together. % The dimensions are TotFiltLenxTotFiltLenxJ. +% +% condNum [numeric]: The condition number of the monitoring microphone +% cross-correlation matrix "RmmMtx". This is a vector of +% length J, with each element corresponding to the +% condition number of the matrix for each trial/sound +% field realisation. % % mMtx [numeric]: The monitoring microphone signals vectorised so that they % can be used directly with either "Ovec" or "Oopt" @@ -136,12 +142,12 @@ % Stephen J. Elliott and Jordan Cheer. % % -------------------------------------------------- -function [O, Rme, Rmm, Ovec, RmeMtx, RmmMtx, mMtx, Omean, RmeMean, RmmMean, Oopt, RmeMtxMean, RmmMtxMean] = obsFiltTD(e, m, beta, filtLen, delay, fs) +function [O, Rme, Rmm, Ovec, RmeMtx, RmmMtx, condNum, mMtx, Omean, RmeMean, RmmMean, Oopt, RmeMtxMean, RmmMtxMean] = obsFiltTD(e, m, beta, filtLen, delay, fs) % ==================================================== % Check for number of arguments % ==================================================== narginchk(2, 6); - nargoutchk(0, 13); + nargoutchk(0, 14); % ==================================================== % Validate input arguments @@ -253,13 +259,20 @@ function [O, Rme, Rmm, Ovec, RmeMtx, RmmMtx, mMtx, Omean, RmeMean, RmmMean, Oopt % ==================================================== % Provide additional output arguments % ==================================================== - % The monitoring microphone signals vectorised per trial/sound field realisation + % Condition number of RmmMtx for each trial/sound field realisation if nargout > 6 + for jIdx = size(RmmMtx, 3):-1:1 + condNum(jIdx) = cond(Rmm(:, :, jIdx)); + end + end + + % The monitoring microphone signals vectorised per trial/sound field realisation + if nargout > 7 mMtx = reshape(m, prod(size(m, [1, 2])), size(m, 3)); end % Observation filter calculated with the mean Rme and Rmm over the trials/sound field realisation - if nargout > 7 + if nargout > 8 % Average the RmeMtx and RmmMtx matrices RmeMtxMean = mean(RmeMtx, 3); RmmMtxMean = mean(RmmMtx, 3); @@ -272,12 +285,12 @@ function [O, Rme, Rmm, Ovec, RmeMtx, RmmMtx, mMtx, Omean, RmeMean, RmmMean, Oopt end % Mean cross-correlations between monitoring and virtual microphones over trials/sound field realisations - if nargout > 8 + if nargout > 9 RmeMean = mean(Rme, 4); end % Mean cross-correlations of monitoring microphones over trials/sound field realisations - if nargout > 9 + if nargout > 10 RmmMean = mean(Rmm, 5); end end \ No newline at end of file