How to do multiple replacements in a cell array

Hi,
I am wondering what is the most efficient way in Matlab to do multiple replacements in a cell array based on the content of a differentt cell array ?
More specifically, I am trying to transform cell1 into cell3 based on the associations defined in cell2 in the most efficient way possible (in other words cell1(:,2) becomes cell3(:,2))
% Cell array data
cell1 = {1, 2, 3, 4, 5; 'A', 'A', 'B', 'C', 'B'; 'AA', 'BB', 'CC', 'DD', 'JJ'}'
% Cell array reference
cell2 = {'C', 'B', 'A'; 'FFFF', 'GGGG', 'HHHH'}'
% Desired output
cell3 = {1, 2, 3, 4, 5; 'HHHH', 'HHHH', 'GGGG', 'FFFF', 'GGGG'; 'AA', 'BB', 'CC', 'DD', 'JJ'}'
Thank you,

2 件のコメント

James Tursa
James Tursa 2020 年 1 月 31 日
Are the letters in cell1 column 2 always 'A', 'B', or 'C'?
Stephen23
Stephen23 2020 年 1 月 31 日
Bluegin's "Answer" moved here:
No, unfortunately. There's about 50 differents codes in reality.

サインインしてコメントする。

 採用された回答

Stephen23
Stephen23 2020 年 1 月 31 日
編集済み: Stephen23 2020 年 1 月 31 日

0 投票

>> [idx,idy] = ismember(cell1(:,2),cell2(:,1));
>> cell3 = cell1;
>> cell3(idx,2) = cell2(idy(idx),2)

1 件のコメント

012786534
012786534 2020 年 1 月 31 日
Neat, thank you. Could the same thing be accomplished with intersect ?
Something along the lines of :[C,ia,ib] = intersect(A,B, 'stable'); ?

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeMatrix Indexing についてさらに検索

タグ

質問済み:

2020 年 1 月 31 日

コメント済み:

2020 年 1 月 31 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by