0

2 つの Matlab 配列 A (数値のグループを含む) と B (A のグループに属する値を含む) があり、配列 A に繰り返しがあります

A = [1 1 1 2 2 3 4 4 4 4 4] 
B = [1 2 3 3 5 4 4 1 6 7 8]

今、私は次の2つのマップを取得したいと思います:

 C = ['1': {1,2,3}, '2': {3,5}, '3':{4}, '4':{1,6,7,8}]  

ここで、 C はグループ番号をインデックスとしてマップし、その特定のグループに関連する値を指定します。

D = ['1':{2,4},'2':{1},'3':{4},'4':{1}]

ここで、D は A からのグループ番号をインデックスとしてマップを与えます。値は、その特定のサブグループの B で繰り返される値がある A からのグループ番号です。

この問題に対処する最も効率的な方法は何ですか? マップは、この種のデータを格納するのに適したデータ構造ですか。最初のものは、避けたいforループで処理できることを知っています。

4

1 に答える 1

1

への行き方がわかりませんD

の場合C、次を使用できますaccumarray

C = accumarray(A,B,[],@(x){x})

C{1}[1 2 3]

于 2013-02-01T16:54:18.347 に答える