2012-12-04 31 views
8

Mam bardzo dużą strukturę tablicy w Matlab. Załóżmy, czysto teoretycznie, aby uprościć sytuację, mam coś takiego:Usuwanie elementów z tablicy struktur w 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; 

Załóżmy teraz mam jakiś warunek, który przyjdzie i sprawia, że ​​chcę, aby usunąć wszystko od structure(2) (wszelkie wpisy w moim struktury tablicy). Jaki jest dobry sposób na zrobienie tego?

Moje rozwiązanie polega na ustawieniu odpowiednich pól na [] (np. structure(1).name = [];), ale to ich nie usuwa, co powoduje, że są puste. Jak faktycznie usunąć je całkowicie z tablicy struktur? Czy istnieje sposób?

Odpowiedz

12

proste, jeśli chcesz usunąć elementu o indeksie i wykonaj następujące czynności:

i = 3 
structure(i) = []; 

A to spowoduje usunięcie elementu o indeksie 3.

Przykład:

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

Teraz:

arrayOfSt = 

    1x5 struct array with fields: 
     name 
     id 

Jeśli wykonujemy:

arrayOfSt(2) = []; 

następnie nowa wartość tablicy structers będą:

arrayOfSt = 

    1x4 struct array with fields: 
     name 
     id 

Wypróbuj!

+0

Doskonale, dziękuję bardzo. –