Cambiare il nome di una variabile ad ogni iterazione

di il
1 risposte

Cambiare il nome di una variabile ad ogni iterazione

Ciao!
Vorrei chiedere come posso automatizzare questo tratto di codice:
for i=1:10
electrode1(i-2,:)= mean(loc (:,1:3))
electrode2(i-2,:)= mean(loc (:,6:8));
electrode3(i-2,:)= mean(loc (:,11:13));
electrode4(i-2,:)= mean(loc (:,16:18));
electrode5(i-2,:)= mean(loc (:,21:23));
electrode6(i-2,:)= mean(loc (:,26:28));
electrode7(i-2,:)= mean(loc (:,31:33));
electrode8(i-2,:)= mean(loc (:,36:38));
electrode9(i-2,:)= mean(loc (:,41:43));
electrode10(i-2,:)= mean(loc (:,46:48));
scatter3(electrode1(:,1),electrode1(:,2),electrode1(:,3))mean(loc (:,1:3))
.....
...
end


nel senso che forrei che il nome electrode... cambiasse in questo modo:
electrodei (i-2,:)=....
scatter3(electrodei(:,1),electrodei(:,2),electrodei(:,3))mean(loc (:,1:3))

Grazie!

1 Risposte

  • Re: Cambiare il nome di una variabile ad ogni iterazione

    Nello script riportato nella domanda ci sono alcuni errori:
    se il loop va da 1 a 10,
    
    for i=1:10
    electrode1(i-2,:)= mean(loc (:,1:3))
    ...
    
    nei primi due "giri" l'indice della riga di "electrode" è <= 0, inoltre il numero di righe di "electrode " (1-2) non corrisponde a quelle di "loc" infatti (a parte il problema dei primi due "giri", il numero di righe di "electrode" alle quali si fa riferimento aumenta, mentre quelle di "loc" rimane invariato (tutte).

    Non è chiaro in che modo si vuole automatizzare lo script.
    Se potessi chiarire la domanda, forse potrei aiutarti.
    Una cosa che si può fare, a prescindere dallo specifico script inserito nella domanda, è utilizzare la funzione "eval":
    
    for i=1:10
       eval(['var_name_' num2str(i) '=i*3;'])
    end
    
    Il codice riportato nell'esempio, genera, nel workspace, 10 variabili, chiamate, rispettivamente:
    
     whos
      Name             Size            Bytes  Class     Attributes
    
      var_name_1       1x1                 8  double              
      var_name_10      1x1                 8  double              
      var_name_2       1x1                 8  double              
      var_name_3       1x1                 8  double              
      var_name_4       1x1                 8  double              
      var_name_5       1x1                 8  double              
      var_name_6       1x1                 8  double              
      var_name_7       1x1                 8  double              
      var_name_8       1x1                 8  double              
      var_name_9       1x1                 8  double  
    
    alle quali viene assegnato il triplo del valore dell'indice che identifica la variabile:
    
    var_name_1 =  3
    var_name_2 = 6
    var_name_3 = 9
    var_name_4 = 12
    var_name_5 = 15
    var_name_6 = 18
    var_name_7 = 21
    var_name_8 = 24
    var_name_9 = 27
    var_name_10 = 30
    
    Hope this helps
Devi accedere o registrarti per scrivere nel forum
1 risposte