Matlab中如何依据映射字典将字符字符串转换为对应数字数组
解决方案
这里提供两种无需使用switch case的简洁实现方案,均支持最多20种不同字母的自定义映射需求:
方案1:ismember索引法(最简洁,推荐)
利用Matlab内置ismember函数的第二个返回值直接获取字母对应的索引,仅需提前按映射规则定义字母顺序列表即可,代码量最小:
% 1. 按你的映射规则定义字母列表,第N位的字母对应数值N % 示例规则为A=1、B=2、C=3,所以按该顺序排列字母,20种字母直接向后补全即可 letter_order = ['A','B','C']; % 2. 输入待转换字符串 input_str = 'ABAABCCBA'; % 3. 一行转换得到目标数值数组 [~, num_array] = ismember(input_str, letter_order);
运行后num_array的输出结果就是你需要的[1,2,1,1,2,3,3,2,1]。
方案2:容器映射法(灵活性更高)
如果你的映射规则不是按列表顺序对应数值,属于自定义随机映射,用containers.Map做键值对映射的扩展性更强:
% 1. 定义字母到数值的映射键值对,20种字母直接补全keys和values即可 keys = {'A','B','C'}; values = [1,2,3]; map = containers.Map(keys, values); % 2. 输入待转换字符串 input_str = 'ABAABCCBA'; % 3. 转换为数值数组 num_array = cell2mat(values(map, num2cell(input_str)));
两种方法的运行效率都可以满足常规数据处理需求,全程无分支判断语句。
内容的提问来源于stack exchange,提问作者sodiumnitrate
相关产品推荐
相关产品推荐

