Code get stuck with nested loop and computer crashes after
Show older comments
I am having an issue to run this block of code:
clear all
set(0,'DefaultFigureVisible','off');
a_data = cell(1,12560);
fft_a_data = cell(1,12560);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%Code lines here before%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
count = 1;
for p2 = 1:a_trials
for p1 = 1:16
figHandle = figure;
topoplot(a_data(p1,:,p2),EEG.chanlocs,'style','map');
[X, Map] = frame2im(getframe(figHandle));
a_data{count} = X;
%FFT
Y = fft(a_data(p1,:,p2));
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
figHandle = figure;
topoplot(P1(fft_index),EEG.chanlocs,'style','map');
[X_fft, Map_fft] = frame2im(getframe(figHandle));
fft_a_data{count} = X_fft;
count = count + 1;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%Code lines here after%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
set(0,'DefaultFigureVisible','on');
At the beginning the computer looks like running it but after it stops and whole system crashes, how should I handle this issue? When I consider a range for p2=1:5 and p1=1:5 it is running normally but to this range p2=1:785 I can't able to perform it. The topoplot belongs to EEGLab toolbox.
Accepted Answer
More Answers (1)
Jan
on 19 Apr 2022
1 vote
What is a_trials?
It looks like you want to run 12560 iteration. You open two figures in each iteration, so there is a total of 25120 open figures. Although they are invisible, they need a lot of memory. The crash means, that the memory is exhausted.
Either close the figures, if you do not need them anymore. Or reuse the existing figures, which would be much moire efficient. See e.g. clf.
2 Comments
Victor Gimenez
on 19 Apr 2022
Victor Gimenez
on 20 Apr 2022
Edited: Victor Gimenez
on 20 Apr 2022
Categories
Find more on DSP Algorithm Acceleration in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!