2011-09-08 59 views
7

Tôi có mảng ba chiều và tôi muốn có thể tìm một giá trị cụ thể và nhận được ba tọa độ.MATLAB: Tìm tọa độ giá trị trong mảng đa chiều

Ví dụ, nếu tôi có:

A = [2 4 6; 8 10 12]

A(:,:,2) = [5 7 9; 11 13 15]

và tôi muốn tìm nơi 7 là, tôi muốn để có được các tọa độ i = 1j = 2k = 2

tôi đã thử các biến thể của find(A == 7), nhưng tôi chưa có bất kỳ nơi đâu.

Cảm ơn!

Trả lời

12

Chức năng tìm kiếm bạn là ind2sub:

[i,j,k]=ind2sub(size(A), find(A==7)) 
i = 
    1 
j = 
    2 
k = 
    2 
+0

Tuyệt vời, đây chỉ là những gì tôi đang tìm kiếm. Cảm ơn! –

0

Bạn có thể sử dụng tìm để xác định các yếu tố khác không trong một mảng, nhưng nó đòi hỏi một chút số học. Từ các tài liệu:

[row,col] = find(X, ...) trả hàng và cột chỉ số của mục khác không trong ma trận X. Cú pháp này đặc biệt hữu ích khi làm việc với ma trận thưa thớt. Nếu X là mảng N chiều với N> 2, col chứa chỉ số tuyến tính cho các cột. Ví dụ: đối với mảng X2 X-by-7-by-3 với phần tử không đồng phân ở X (4,2,3), tìm trả về 4 trong hàng và 16 trong col. Đó là, (7 cột trong trang 1) + (7 cột trong trang 2) + (2 cột ở trang 3) = 16.

Nếu ma trận M có kích thước a x b x c, sau đó các chỉ số (i,j,k) đối với một số giá trị x là:

[row,col] = find(A==x); 
i = row; 
j = mod(col,b); 
k = ceil(col/b); 
Các vấn đề liên quan