2011-01-21 37 views
5

Tôi cần phải xây dựng nhanh nhanhánh xạ một đối một giữa hai mảng số nguyên lớn trong Matlab. Lập bản đồ nên dùng như là đầu vào một phần tử từ một mảng được xác định trước, ví dụ:Các mảng hoặc bản đồ liên kết nhanh trong Matlab

in_range = [-200 2 56 45 ... ]; 

và bản đồ nó, bởi chỉ số của nó trong mảng trước, để các yếu tố tương ứng từ một mảng được xác định trước, ví dụ:

out_range = [-10000 0 97 600 ... ]; 

Ví dụ, trong trường hợp trên, my_map(-200) nên sản lượng -10000, và my_map(45) nên sản lượng 600.

Tôi cần một giải pháp mà

  1. có thể lập bản đồ các mảng rất lớn (~ yếu tố 100K) tương đối hiệu quả.
  2. Cân tốt với các giới hạn của in_rangeout_range (tức minmax giá trị của họ)

Cho đến nay, tôi đã giải quyết được vấn đề này sử dụng giao diện bên ngoài của Matlab để Java với HashMaps Java, nhưng tôi đã tự hỏi nếu có một thay thế Matlab bản địa.

Cảm ơn!

+0

bản sao có thể có của [Bảng băm trong Matlab] (http://stackoverflow.com/questions/3591942/hash-tables-in-matlab) – Jonas

+1

Câu trả lời cho bản sao (ngoài tôi) cho bạn biết tất cả những gì bạn cần biết. – Jonas

Trả lời

4

Phiên bản mới nhất của Matlab có hashes. Tôi đang sử dụng 2007b và họ không có sẵn, vì vậy tôi sử dụng structs bất cứ khi nào tôi cần một băm. Chỉ cần chuyển đổi số nguyên thành tên trường hợp lệ với genvarname.

Các vấn đề liên quan