Description
Hello!
I am trying to implement an event-related MIPAC on my data, but I encountered an error that I struggle to solve.
Here is my EEG objet :
EEG =
struct with fields:
group: ''
session: []
comments: []
icaact: []
icawinv: []
icasphere: []
icaweights: []
icachansind: []
urchanlocs: []
chaninfo: []
ref: ''
event: []
urevent: []
eventdescription: []
epoch: []
epochdescription: []
reject: []
stats: []
specdata: []
specicaact: []
splinefile: []
icasplinefile: ''
dipfit: []
history: ''
saved: ''
etc: []
datfile: ''
run: []
subject: ''
condition: ''
setname: ''
filename: ''
filepath: ''
chanlocs: [1×2 struct]
nbchan: 2
data: [2×1000×20 double]
srate: 500.0000
pnts: 1000
times: [-0.4980 -0.4960 -0.4940 -0.4920 -0.4900 -0.4880 -0.4860 -0.4840 -0.4820 -0.4800 … ] (1×1000 double)
xmin: -0.4980
xmax: 1.5000
trials: 20
And here is the part of my code where I apply the pop_pac() function :
nbins = 20 ;
flow = 2:1:29;
fhigh = 30:5:150;
EEG = pop_pac(EEG,'Channels',[flow(1),flow(end)],[fhigh(1),fhigh(end)],1,2,'method','ermipac','nbinskl',nbins,'nfreqs1',length(flow),'nfreqs2',length(fhigh),'bonfcorr',0);
When i run pop_pac() I have this error :
Unrecognized function or variable 'pacstruct'.
Error in eeg_pac (line 561)
pacstruct.ermipac.pacval(i,j,k,:) = filtfilt(b,a,squeeze(pacstruct.ermipac.pacval(i,j,k,:))');
Error in pop_pac (line 440)
[~, ~, freqs1, freqs2, alltfX, alltfY,~, pacstruct, tfXtimes, tfYtimes] = eeg_pac(X, Y, EEG.srate, options{:});
I am wondering if the error is coming from the eeg_pac() function code here :
% Loop phase frequencies
for find1 = 1:length(freqs1)
if strcmpi(g.verbose, 'on')
fprintf('Progress : %.2f %% \n', 100*(find1-1)/length(freqs1));
end
% Defining time vector and other stuff before runnning the loops
if strcmp(g.method, 'ermipac')
windowsearchsize = round(srate/freqs1(find1));
micomplimits = [round(windowsearchsize/2)+1 ti_loopend-round(windowsearchsize/2)-1];
tindxvector = micomplimits(1):micomplimits(2); %%%% HERE
else
tindxvector = 1:ti_loopend;
windowsearchsize = [];
end
In fact, there is a problem here cause tindxvector is empty because micomplimits(1) cause is positive and micomplimits(2) is negative. I tried to solve this error but as I don’t really know what is representing tindxvector I struggle a bit to understand what I am doing!
I tried to order micomplimits(1) and micomplimits(2) according to their values to obtain a non-void tindxvector :
if micomplimits(1)<micomplimits(2)
tindxvector = micomplimits(1):micomplimits(2);
else
tindxvector = micomplimits(2):micomplimits(1);
end
But then I have another error so I think it was not a good idea :
Error using eeg_pac
Index in position 1 is invalid. Array indices must be positive integers or logical values.
Error in pop_pac (line 440)
[~, ~, freqs1, freqs2, alltfX, alltfY,~, pacstruct, tfXtimes, tfYtimes] = eeg_pac(X, Y, EEG.srate, options{:});
Have you already encountered this error? If yes, do you know how to solve it?
Thanks a lot for your help!!!