Buongiorno a tutti
Sono una studentessa di ingegneria biomedica e sto svolgendo un tirocinio presso un istituto di ricerca.
Mi è stato chiesto di ottimizzare e correggere un codice in matlab (R2018a), ma da due settimane a questa parte non riesco a risolvere un problema. Il ciclo for che ho riportato sotto dovrebbe creare (fra le altre cose) questi 6 arrays: ydata_low_1, ydata_low_2, ydata_low_3, ydata_high_1, ydata_high_2 e ydata_high_3.
Ciascuno di questi array ha m righe e t colonne.
Se k = 1 allora m = 3121
se k = 2 allora m = 3554
se k = 3 allora m = 3510
Gli array "low" hanno 5 colonne (da Ik_0 a Ik_4) mentre gli array "high" hanno 4 colonne (da Ik_5 a Ik_8).
I vettori Ik_t fanno parte della struct I_vars.
for k = 1 : num_int
I_vars_list = who('-regexp',['I' num2str(k) '_\d+$']);
tmp_file = [tempname '.mat'];
save(tmp_file,I_vars_list{:});
I_vars = load(tmp_file);
var_names = fieldnames(I_vars);
n_vars = length(var_names)-1;
eval(['m = length(I',num2str(k),')'])
for i = 1 : m
for t = 0:4
ydata_low(t+1,:) = I_vars.(['I' num2str(k) '_' num2str(t)]);
ydata_l = ydata_low';
eval(['ydata_low_', num2str(k),'= ydata_l']);
eval(['xdata_',num2str(k),' = bvalues_',num2str(k),'(1:5)']);
end
for t = 5:8
ydata_high(t-4,:) = I_vars.(['I' num2str(k) '_' num2str(t)]);
ydata_h = ydata_high';
eval(['ydata_high_', num2str(k),'= ydata_h']);
eval(['xdata1_',num2str(k),' = bvalues_',num2str(k),'(6:9)']);
end
end
end
eval(['ydata_low_',num2str(k),'(~isfinite(ydata_low_',num2str(k),'))=0']);
eval(['ydata_high_',num2str(k),'(~isfinite(ydata_high_',num2str(k),'))=0']);
Quando eseguo il codice, vengono creati solo ydata_low_1 e ydata_high_1, poi il codice entra in un loop infinito e sono costretta a bloccarlo.
Grazie a chi mi aiuterà