# Parfor loop for saving data

1 view (last 30 days)
Alejandro Fernández on 18 Apr 2020
Commented: Sindar on 22 Apr 2020
Hi, I needed to know if the next loop can be implemented using a parfor, because if I do that I get an error.
What I need is to store in the first column the time, in the second the psnr and in the third in snr for each of the 4 images.
Z = zeros(50,3,4);
parfor idx = 1 : 4
I = cargarDatos(idx);
for noise = 1 : 100
if isequal(mod(noise,2),1)
tic
J = medfilt2(I,[noise noise])
Z(r,1,idx) = toc;
[Z(r,2,idx),Z(r,3,idx)] = psnr(J,I4);
r = r + 1;
end
end
end
The "cargarDatos" function allows to upload the images in question

Edric Ellis on 20 Apr 2020
Where are you defining r? As written, this loop is not compatible with parfor because it appears as though the iterations are order-dependent (because of r).
Alejandro Fernández on 20 Apr 2020
Yes you are right, I forgot to define r in the loop, but it still doesn't work, it still gives me error
Z = zeros(50,3,4);
parfor idx = 1 : 4
I = cargarDatos(idx);
r = 1;
for noise = 1 : 100
if isequal(mod(noise,2),1)
tic
J = medfilt2(I,[noise noise])
Z(r,1,idx) = toc;
[Z(r,2,idx),Z(r,3,idx)] = psnr(J,I4);
r = r + 1;
end
end
end
Sindar on 22 Apr 2020
what error?