Vorrei conoscere il modo più semplice per aggiornare una struttura Matlab da un'altra struttura con campi diversi. Per favore, vedi il mio esempio per capire cosa intendo. Ho due strutture S1 e S2 con nomi di campo diversi che voglio combinare.Strutture concatenate: Aggiorna i campi della struttura senza sovrascrivere i campi esistenti
S1.a = 1;
S1.b = 2;
S2.c = 3;
S2.d = 4;
Se scrivo S1 = S2;
struttura S1 sarà ovviamente sovrascritta da S2. Voglio che il risultato sia il seguente codice:
S1.a = 1;
S1.b = 2;
S1.c = 3;
S1.d = 4;
C'è un modo semplice per farlo. Riesco a farlo utilizzando un ciclo for e la funzione fieldnames()
per ottenere il nome di campo da S2 e inserirlo in S1, ma non è una soluzione davvero accurata.
Lo scambio di file Matlab ha una funzione chiamata [ 'catstruct'] (http: //www.mathworks. com/matlabcentral/fileexchange/7842-catstruct) che sembra svolgere il compito richiesto. Forse fornirà suggerimenti o anche una soluzione completa. – mikkola
Non penso che usare un ciclo for qui non sia abbastanza buono. Altre possibilità sono usare 'struct2cell' se hai una sorta di struttura nei nomi dei campi e puoi generarli a livello di codice. – rst
cosa intendi con "soluzione non propriamente pulita"? Perché esattamente non è una buona soluzione? –