Tôi đang tìm một giải pháp thanh lịch cho vấn đề rất đơn giản này trong MATLAB. Giả sử tôi có một ma trậnMATLAB: trích xuất submatrix với chỉ mục logic
>> M = magic(5)
M =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
và một biến logic của form
I =
0 0 0 0 0
0 1 1 0 0
0 1 1 0 0
0 0 0 0 0
0 0 0 0 0
Nếu tôi cố gắng để lấy các yếu tố của M
liên quan đến 1
giá trị trong I
, tôi nhận được một vector cột
>> M(I)
ans =
5
6
7
13
Cách đơn giản nhất để lấy ma trận [5 7 ; 6 13]
từ chỉ mục logic này là gì?
Nếu tôi biết hình dạng của các phần tử khác 0 của I
, tôi có thể sử dụng định dạng lại sau khi lập chỉ mục, nhưng đó không phải là trường hợp chung.
Ngoài ra, tôi biết rằng hành vi mặc định cho loại lập chỉ mục này trong MATLAB thực thi tính nhất quán đối với trường hợp trong đó các giá trị khác không ở I
không tạo thành ma trận, nhưng tôi tự hỏi liệu có đơn giản hay không giải pháp cho trường hợp cụ thể này.
Chỉ cần những gì tôi sẽ trả lời :-) –
Điều đó không làm việc allways, ví dụ khi không đối xứng. – rst
@RobertStettler Nếu bạn có nghĩa là ma trận 'I' không thể được thực hiện ngẫu nhiên, đó là sự thật, nhưng nhìn vào câu hỏi tôi nghĩ rằng đó là một giới hạn hợp lý. Nếu bạn có ý nghĩa gì đó khác: Tôi không thấy làm thế nào có liên quan đến biểu thức ở đây, bạn có lẽ có thể trình bày một ví dụ mà giải pháp không thành công? (Ma trận đầu vào, đầu ra, đầu ra dự kiến). –