我有一个包含一些描述的单元格数组,即my_des
。
my_des = [{'FRD'} {'1'}; {'UNFRD'} {'2'}; {'OTH'} {'3'};];
我还有一个大约5000x1的单元阵列。此数组中的元素可以是'FRD'
,'UNFRD'
或'OTH'
。
我想要做的是将这些文本值替换为my_des
中的相应数值。
目前我唯一的想法(我认为不是很好)是循环my_des
并进行字符串替换。
示例:
所以说我现在的矢量看起来像这样:
FRD
FRD
OTH
UNFRD
OTH
FRD
然后我想要的输出是这样的:
1
1
3
2
3
1
数字来自my_des
数组
答案 0 :(得分:1)
您要使用字符 '1'
,'2'
,'3'
还是只使用数字 1
,2
,3
?区别在于1行答案和2行答案之间的区别!
根据您的示例,让我们使用以下数据:
arr = {'FRD'; 'FRD'; 'OTH'; 'UNFRD'; 'OTH'; 'FRD'};
获取my_des
中每个元素的arr
内的行索引,并使用它来获取相应的第二列值...
% If you just want the *number* then this is all you need
[~, idx] = ismember(arr, my_des);
% idx is the row within column 1 of my_des where the value in arr is found
% >> idx = [1; 1; 3; 2; 3; 1]
% If you want to get the values my_des then use idx as a row index
out = mydes(idx, 2);
% out is the corresponding values from the 2nd column of my_des, whatever they may be.
% >> out = {'1'; '1'; '3'; '2'; '3'; '1'};
除此之外:为什么要通过连接my_des
的1元素单元格数组来声明单元格数组?相反,你可以这样做:
my_des = {'FRD', '1';
'UNFRD', '2';
'OTH', '3'};