Back in 2009 we published a paper titled “Functional near infrared spectroscopy (NIRS) signal improvement based on negative correlation between oxygenated and deoxygenated hemoglobin dynamics“. In a nutshell, we found the oxy- and deoxy-Hb are negatively correlated when noise level is low. When noise level increases, their correlation becomes more and more positive.
Based on this phenomenon we can check the noise level of a channel using the correlation. Below is the script. You simply input the hbo and hbr data (both matrix), and the output is the bad channels.
function badChannels = checkDataQuality(hbo,hbr)
% function badChannels = checkDataQuality(hbo,hbr) % Check data quality using correlation between hbo and hbr as indicator % if the correlation is strictly -1, then bad channel % if the correlation is > 0.5, then bad channel % Input: hbo and hbr are NxM matrix, N is number of scan, and M number of % channels % output: array of bad channels % % Xu Cui % 2009/11/25 n = size(hbo,2); for ii=1:n tmp = corrcoef(hbo(:,ii), hbr(:,ii)); c(ii) = tmp(2); end pos = find(c==-1); if ~isempty(pos) disp(['Channels with -1 correlation: ' num2str(pos)]) end pos2 = find(c>0.5); if ~isempty(pos2) disp(['Channels with >0.5 correlation: ' num2str(pos2)]) end badChannels = [pos pos2];