Help needed script frequency

12 ビュー (過去 30 日間)
Carmen Sergiou
Carmen Sergiou 2021 年 6 月 30 日
コメント済み: Carmen Sergiou 2021 年 6 月 30 日
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 件のコメント
Carmen Sergiou
Carmen Sergiou 2021 年 6 月 30 日
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 2021 年 6 月 30 日
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

サインインしてコメントする。

採用された回答

Walter Roberson
Walter Roberson 2021 年 6 月 30 日
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 件のコメント
Walter Roberson
Walter Roberson 2021 年 6 月 30 日
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 2021 年 6 月 30 日
Ok, well I am still stuck then.
Probably need to do some steps before that.
Thank you for your time!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeWavelet Toolbox についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by