Struttura con numero di campi variabile MATLAB

di il
2 risposte

Struttura con numero di campi variabile MATLAB

Salve a tutti,
qualcuno saprebbe dirmi come riesco a creare una struttura con un numero di campi variabile. Mi spiego meglio.
Supponiamo che io debba creare diverse matrici tutte con lo stesso numero di colonne.
Ipotizziamo che il numero di matrici da creare sia "numero_matrici=3;". Il numero di colonne per ogni matrice sia "num_colonne=5;".
Come faccio a creare una struttura con tanti campi quanto è il valore di numero_matrici? Oppure come faccio a creare tante matrici tutte con lo stesso numero di colonne?
Purtroppo questi valori non li conosco prima, ma li scopro durante l'esecuzione del programma quindi potrebbero cambiare.
Grazie mille.

2 Risposte

  • Re: Struttura con numero di campi variabile MATLAB

    Per creare una struttura con un numero di campi definito in base al valore di una variabile, puoi sfruttare la funzionalità del "dynamic field".
    In pratica, puoi definire i nomi dei campi (e quindi il numero degli stessi) partendo da una stringa "base" ed aggiungendovi, per esempio, un valore numerico progressivo, oppure, avendo a disposizione i diversi nomi dei campi, direttamente quelli.

    https://it.mathworks.com/help/matlab/matlab_prog/generate-field-names-from-variables.html

    Ad esempio, definendo come stringa base "matrice_numero_" ed avendo "numero_matrici=3":
    
    stringa_base='matrice_numero_'
    numero_matrici=3
    for i=1:numero_matrici
       my_struct.([stringa_base num2str(i)])=[]
    end
    
    ottieni la struct "my_struct" con i tre campi:
    
        matrice_numero_1 = [](0x0)
        matrice_numero_2 = [](0x0)
        matrice_numero_3 = [](0x0)
    
    rappresentati da una matrice vuota che potrai "riempire" con tuoi datti.
    Lavorando con le strutture con nomi dei campi "dinamici", puoi utilizzare le funzioni "getfields", fieldnames" ecc. () per accedere in modo altrettanto dinamico ai campi ed ai loro contenuti.

    In alternativa puoi utilizzare delle matrici a 3 dimensioni "m(d1 x d2 x d3) dove una delle tre dimensioni corrisponde a "numero matrici".
    In questo caso le n matrici devono avere tutte lo stesso numero di righe e colonne.

    Un'ulteriore possibilità, simile alla precedente, consiste nell'utilizzare dei "cellarray".

    La scelta tra le varie alternative dipende da come generi i dati delle matrici e come li vuoi utilizzare.
  • Re: Struttura con numero di campi variabile MATLAB

    Grazie mille!!
Devi accedere o registrarti per scrivere nel forum
2 risposte