How do I find and replace strings in a cell array with numerical values?

I've got the following 3 x 5 cell array;
10000.1110000000 20000.9000000000 100.450000000000 22445 'SET_THRESH'
20000.2220000000 20000.9000000000 200.670000000000 22445 'HOLD_THRESH'
30000.3330000000 20004.6000000000 300.890000000000 22445 'DELETE_THRESH'
I'm trying to come up with a technique where the strings in column 5 are automatically replaced with their numerical equivalents (SET_THRESH is 0, HOLD_THRESH is 2, DELETE_THRESH is 3). The resulting 3 x 5 cell array would look like this;
10000.1110000000 20000.9000000000 100.450000000000 22445 '0'
20000.2220000000 20000.9000000000 200.670000000000 22445 '2'
30000.3330000000 20004.6000000000 300.890000000000 22445 '3'
Is it possible to achieve the desired output using a combination of functions within a loop?

 採用された回答

Walter Roberson
Walter Roberson 2017 年 3 月 4 日
possible_threshes = {'SET_THRESH', 'HOLD_THRESH', 'DELETE_THRESH'};
thresh_vals = [0, 2, 3]
[tf, idx] = ismember(YourCell(:,5), possible_threshes);
YourCell(tf, 5) = num2cell( thresh_vals( idx(tf) ) );
Any entry that is unmatched will be left as a string.

1 件のコメント

Brad
Brad 2017 年 3 月 4 日
Walter, I completely forgot about that option for ismember. Thank you!

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeCharacters and Strings についてさらに検索

質問済み:

2017 年 3 月 4 日

コメント済み:

2017 年 3 月 4 日

Community Treasure Hunt

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

Start Hunting!

Translated by