Signal auto-correlation in matlab (xcorr function)
    조회 수: 4 (최근 30일)
  
       이전 댓글 표시
    
Hi! 
I am working on an EEG-electrophysiology dataset ('csd'). It is structured as a 3D array (channels x time x trials). The dimensions are 16x1527x200.
I am trying to calculate trial-averaged autocorrelation for each channel and I am getting the error message below. I think it has to do with the last part of my loop? The dimensions of the ac0 output (dot products) are 1x201 for some reason, I think the way the function is built, it adds one more column? 
Any help would be great!

댓글 수: 2
  Mathieu NOE
      
 2023년 4월 20일
				if you expect someone to help you , it's good practice to share some code and data 
채택된 답변
  Chunru
      
      
 2023년 4월 21일
        csd = randn(4, 100, 20);        % dummy data
% Calculate trial-averaged auto-correlation
nchan = size(csd, 1); % channels
ntrials = size(csd, 3); % trials
nlags = 100; % n of lags 
ac = zeros(nchan, 2*nlags + 1); % initialize auto-correlation vector
%          ^^^^
for i = 1:nchan % loop over channels
    for k = 1:ntrials % loop over trials
        x = csd(i, :, k) - mean(csd(i, :, k)); % mean-normalize data
        [acO, lags] = xcorr(x, nlags, 'biased'); % biased estimate
        ac(i, :) = ac(i, :) + double(acO/ntrials); % add to total scaled by 1/k
        %                            ^^^
    end
end
추가 답변 (1개)
  Md Hasem
 2024년 10월 25일
        Read the Sun activity data from file sunspot.dat; 2. Filter the continuous component of the signal (centering the signal or using high-pass filter); 3. Calculate autocorrelation of the signal
댓글 수: 0
참고 항목
카테고리
				Help Center 및 File Exchange에서 EEG/MEG/ECoG에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



