2012-12-04 18 views
8

Tôi có một mảng cấu trúc rất lớn trong MATLAB. Giả sử, vì lợi ích của đối số, để đơn giản hóa tình hình, tôi có cái gì đó như:Xóa các mục khỏi một mảng cấu trúc trong 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; 

Bây giờ giả sử tôi có một số điều kiện đến cùng và làm cho tôi muốn xóa tất cả mọi thứ từ structure(2) (bất kỳ và tất cả các mục trong mảng cấu trúc của tôi). Một cách tốt để làm điều đó là gì?

Giải pháp của tôi là chỉ cần đặt các trường tương ứng thành [] (ví dụ: structure(1).name = [];), nhưng điều đó không loại bỏ chúng, chỉ làm cho chúng trống. Làm thế nào để thực sự loại bỏ chúng hoàn toàn khỏi mảng cấu trúc? Là có một cách?

Trả lời

12

đơn giản nếu bạn muốn xóa phần tử ở index i làm như sau:

i = 3 
structure(i) = []; 

Và đó sẽ loại bỏ phần tử ở index 3.

Ví dụ:

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

Bây giờ là:

arrayOfSt = 

    1x5 struct array with fields: 
     name 
     id 

Nếu chúng ta thực hiện:

arrayOfSt(2) = []; 

thì giá trị mới của các mảng structers sẽ là:

arrayOfSt = 

    1x4 struct array with fields: 
     name 
     id 

Hãy dùng thử!

+0

Tuyệt vời, cảm ơn bạn rất nhiều. –