Help needed script frequency

12 vues (au cours des 30 derniers jours)
Carmen Sergiou
Carmen Sergiou le 30 Juin 2021
Commenté : Carmen Sergiou le 30 Juin 2021
Dear Community
I have created a loop to get phase synchronization for frequency range from 4-8 hz, but for some reason the script calculates only the value for 8Hz.
What am I doing wrong?
% phase-based connectivity
load 'EC_I.mat'
% names of the channels you want to compute connectivity between
channel1 = 'Fz';
channel2 = 'F8';
% create complex Morlet wavelet
frequencies = [4:8];
time = -1:1/EEG.srate:1;
half_wavN = (length(time)-1)/2;
all_wavelet = zeros(10, 1001);
for i_frequencies = frequencies
center_freq = i_frequencies ;
wavelet = exp(2*1i*pi*center_freq.*time) .* exp(-time.^2./(2*(4/(2*pi*center_freq))^2))
all_wavelet(i_frequencies,:) = wavelet ;
end
all_phase_synchronization = zeros(1, 1000);
for i_frequencies = frequencies
center_freq = i_frequencies ;
phase_synchronization = abs(mean(exp(1i*(phase_data(2,:)-phase_data(1,:)))));
all_phase_synchronization(i_frequencies,:) = phase_synchronization ;
end
disp([ 'Synchronization between ' channel1 ' and ' channel2 ' is ' num2str(phase_synchronization) '!' ])
All tips would be very helpful!! Thanks in advance,
Carmen
  3 commentaires
Carmen Sergiou
Carmen Sergiou le 30 Juin 2021
Thank you so much for responding, so now I have changed the following:
frequencies = [4:8];
time = -1:1/EEG.srate:1;
half_wavN = (length(time)-1)/2;
all_wavelet = zeros(10, 1001);
for i_frequencies= frequencies
center_freq = i_frequencies ;
wavelet = exp(2*1i*pi*center_freq.*time) .* exp(-time.^2./(2*(4/(2*pi*center_freq))^2))
all_wavelet(1:5,:)= wavelet;
%all_wavelet(i_frequencies,:) = wavelet ;
end
all_phase_synchronization = zeros(1, 1000);
for i_frequencies = frequencies
center_freq = i_frequencies ;
phase_synchronization = abs(mean(exp(1i*(phase_data(2,:)-phase_data(1,:)))));
all_phase_synchronization(1:5, :) = phase_synchronization ;
end
disp([ 'Synchronization between ' channel1 ' and ' channel2 ' is ' num2str(phase_synchronization) '!' ])
And get this error :
Unable to perform assignment because the size of the left side is 5-by-0 and the
size of the right side is 1-by-1001.
Sorry, I am very new to matlab coding!!
Carmen Sergiou
Carmen Sergiou le 30 Juin 2021
I am now copying every electrode pair combination in excel, but is there also an option to have it in matlab in table? If I want to do analysis or correlations with it?
And I have to figure out how to differ between my two conditions also, if that is not possible I will make 2 seperate files, if there is documentation for that also very welcome!
Thanks again, really a life saver!!
Best,
Carmen

Connectez-vous pour commenter.

Réponse acceptée

Walter Roberson
Walter Roberson le 30 Juin 2021
frequencies = [4:8];
nfreq = length(frequencies);
time = -1:1/EEG.srate:1;
half_wavN = (length(time)-1)/2;
all_wavelet = zeros(10, 1001);
for idx = 1 : nfreq
center_freq = frequencies(idx);
wavelet = exp(2*1i*pi*center_freq.*time) .* exp(-time.^2./(2*(4/(2*pi*center_freq))^2));
all_wavelet(idx,:)= wavelet;
end
all_phase_synchronization = zeros(nfreq, size(all_wavelet,2));
for idx = 1 : nfreq
center_freq = frequencies(idx);
phase_synchronization = abs(mean(exp(1i*(phase_data(2,:)-phase_data(1,:)))));
all_phase_synchronization(idx, :) = phase_synchronization ;
end
but you do not use all_wavelet() after you create it. and your phase_synchronization calculation always calculates over the same data and does not use the center_freq information. You also seem to expect it to be a vector rather than having one for each frequency. I suspect that you should not be using a loop there, just
all_phase_synchronization = abs(mean(exp(1i*(phase_data(2,:)-phase_data(1,:)))));
as a single statement with no loop and no initialization to zero needed.
  3 commentaires
Walter Roberson
Walter Roberson le 30 Juin 2021
all_phase_synchronization is exactly the same for all rows because your code does not use the center_freq or idx information at all. Every iteration of the loop only works with phase_data(2,:)-phase_data(1,:) so it is exactly the same calculation every time.
Carmen Sergiou
Carmen Sergiou le 30 Juin 2021
Ok, well I am still stuck then.
Probably need to do some steps before that.
Thank you for your time!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Wavelet Toolbox dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by