用数字替换元胞数组中的字符串值
Replacing string values in cell array with numbers
我有一个元胞数组,其中包含一些描述,即 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
数组
您要使用字符'1'
、'2'
、'3'
还是只使用数字 1
, 2
, 3
?区别在于 1 行答案和 2 行答案之间的区别!
根据您的示例,我们使用以下数据:
arr = {'FRD'; 'FRD'; 'OTH'; 'UNFRD'; 'OTH'; 'FRD'};
获取 arr
中每个元素的 my_des
内的行索引,并使用它来获取相应的第二列值...
% 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'};
我有一个元胞数组,其中包含一些描述,即 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
数组
您要使用字符'1'
、'2'
、'3'
还是只使用数字 1
, 2
, 3
?区别在于 1 行答案和 2 行答案之间的区别!
根据您的示例,我们使用以下数据:
arr = {'FRD'; 'FRD'; 'OTH'; 'UNFRD'; 'OTH'; 'FRD'};
获取 arr
中每个元素的 my_des
内的行索引,并使用它来获取相应的第二列值...
% 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'};