Sự khác biệt giữa việc truy cập các phần tử trong mảng ô sử dụng dấu ngoặc đơn ()
và dấu ngoặc nhọn {}
là gì? Ví dụ: Tôi đã cố gắng sử dụng cell{4} = []
và cell(4) = []
. Trong trường hợp đầu tiên nó thiết lập các yếu tố thứ để []
, nhưng trong trường hợp thứ hai nó bị xóa sổ các yếu tố tế bào, tức là giảm số lượng các yếu tố tế bào bằng 1.Sự khác biệt giữa việc truy cập các phần tử ô bằng cách sử dụng dấu ngoặc nhọn và dấu ngoặc đơn
Trả lời
Hãy suy nghĩ mảng ô là một mảng đồng nhất thông thường, các thành phần của chúng là tất cả cell
s. Dấu ngoặc đơn (()
) chỉ cần truy cập đối tượng bao bọc cell
, trong khi truy cập các phần tử bằng dấu ngoặc nhọn ({}
) cho đối tượng thực tế có trong ô.
Ví dụ,
A={ [5,6], 0 , 0 ,0 };
sẽ trông như thế này:
Cú pháp làm một yếu tố bằng []
với ngoặc thực sự là một yêu cầu để xóa phần tử đó, vì vậy khi bạn yêu cầu làm foo(i) = []
, bạn hãy xóa i -thứ. Nó không phải là một hoạt động gán, mà là một hoạt động RemoveElement
, sử dụng cú pháp tương tự để gán.
Tuy nhiên, khi bạn làm foo{i} = []
bạn đang gán cho ô thứ i một giá trị mới (là một mảng trống), do đó xóa nội dung của ô đó.
bạn có thể xem ô dưới dạng danh sách, lưu trữ các con trỏ tới một số thứ khác. Với() bạn nhận được các con trỏ, với {} bạn có được những thứ mà con trỏ trỏ tới. – gstar2002
Một cách khác để xem xét nó là gán cho '[]' loại bỏ bất cứ điều gì bạn gán cho. Vì vậy, 'foo (i) = []' thực sự loại bỏ ô thứ i và 'foo {i} = []' loại bỏ nội dung của ô thứ i. (Để lại không có gì ('[]') phía sau) –
Hãy xem tài liệu về Octave này trên các mảng tế bào (tương thích MATLAB;)) https://www.gnu.org/software/octave/doc/v4.0.1/Indexing- Cell-Arrays.html # Chỉ mục-Ô-Mảng] –
Xem sự giúp đỡ trong this link. Như bạn sẽ thấy, truy cập bằng dấu ngoặc đơn(), cung cấp cho bạn một tập hợp con của một ô (tức là một ô con), trong khi dấu ngoặc nhọn {} cung cấp cho bạn nội dung của ô bạn đang cố gắng truy cập.
bản sao có thể có của [MATLAB và xử lý mảng ô trong vòng lặp] (http://stackoverflow.com/questions/4635052/matlab-and-cell-array-handling-in-for-loop) – Jonas
Liên kết toán học [ truy cập mảng ô] (http://www.mathworks.com/help/techdoc/matlab_prog/br04bw6-98.html) giải thích một cách rất sáng suốt để xóa các khái niệm của bạn và sau đó bạn đã sẵn sàng để chơi với các mảng . – SKM