I have written a piece of code that essentially has this structure:
function [output] = spectralSVD(S,thr)
E_tot = trace(abs(S));
n_sv_max = min(size(S));
n_sv = 0;
E_rec = 0;
while E_rec < thr && n_sv <= n_sv_max
n_sv = n_sv+1;
E_rec = 100*cumsum(diag(abs(S(1:n_sv,1:n_sv))))/E_tot;
At this point, the code crashes: "Operands to the and && operators must be convertible to logical scalar values."
So as far as I understood, the && would be appropriate here since both conditionals are single-value comparisons (none of E_rec, thr, n_sv and n_sv_max are vectors or matrices). However, I still get the error message mentioned in the title. I have tried converting all of the aforementioned variables with the uint8() function (even though that does not do exactly what I want), but to no avail. It would appear that I misunderstood the explanation I read in other questions on the same error message.
Could anyone explain me where my thought process is going wrong, and how to appropriately fix my code? It would be very much appreciated!