2012-12-04 23 views
8

Ho una matrice di strutture molto grande in MATLAB. Supponiamo, per ipotesi, per semplificare la situazione, ho qualcosa di simile:Rimozione di elementi da una matrice di strutture in MATLAB

structure(1).name = 'a'; 
structure(2).name = 'b'; 
structure(3).name = 'c'; 
structure(1).returns = 1; 
structure(2).returns = 2; 
structure(3).returns = 3; 

Ora supponiamo di avere una condizione che viene avanti e mi fa venir voglia di cancellare tutto da structure(2) (ogni e tutte le voci nella mia serie struttura). Qual è un buon modo per farlo?

La mia soluzione è stata quella di impostare i campi corrispondenti su [] (ad esempio structure(1).name = [];), ma questo non li rimuove, che li rende solo vuoti. Come faccio a rimuoverli completamente dall'array della struttura? C'è un modo?

risposta

12

semplice se si vuole cancellare l'elemento in corrispondenza dell'indice i effettuare le seguenti operazioni:

i = 3 
structure(i) = []; 

E che rimuoverà elemento in corrispondenza dell'indice 3.

Esempio:

st.name = 'text'; 
st.id = 1524; 
arrayOfSt = [st st st st st]; 

Ora:

arrayOfSt = 

    1x5 struct array with fields: 
     name 
     id 

Se eseguiamo:

arrayOfSt(2) = []; 

allora il nuovo valore della matrice di structers saranno:

arrayOfSt = 

    1x4 struct array with fields: 
     name 
     id 

Provalo!

+0

Perfetto, grazie mille. –

Problemi correlati