Matlab 将单元格数组中的字符串替换为1x3数字单元格数组

Matlab 将单元格数组中的字符串替换为1x3数字单元格数组,matlab,Matlab,单元阵列数据如下: data= 'A' [0.006] 'B' 'C' [3.443] 'C' B=data(1:end,1); B=regexprep(B,'C','[0 0 0]'); B=regexprep(B,'A','[0 1 0]'); 我想把第一列中的字符转换成1x3向量,意思是 “A”替换为[0][0][0], “C”替换为[0][1][0]。。 结果将是 [0] [0] [0] [0.006] 'B' [0] [1] [0] [3.443] 'C' 我尝试的代码如下所示

单元阵列数据如下:

data=

'A' [0.006] 'B'
'C' [3.443] 'C'
B=data(1:end,1);
B=regexprep(B,'C','[0 0 0]');
B=regexprep(B,'A','[0 1 0]');
我想把第一列中的字符转换成1x3向量,意思是

“A”替换为[0][0][0], “C”替换为[0][1][0]。。 结果将是

[0] [0] [0] [0.006] 'B'
[0] [1] [0] [3.443] 'C'
我尝试的代码如下所示:

data=

'A' [0.006] 'B'
'C' [3.443] 'C'
B=data(1:end,1);
B=regexprep(B,'C','[0 0 0]');
B=regexprep(B,'A','[0 1 0]');
结果告诉我

B=

'[0 0 0]'
'[0 1 0]'

这是错误的,每个字符不会更改为1x3数组…请帮助…

因为您没有指定将字母转换为数字的规则, 我假设你想用000替换A,用001替换B,…,用111替换H 从0到7的二进制数字,对应于字母A到H

如果你想升到Z,下面的代码可以很容易地修改

%# you data cell array
data = {
    'A' [0.006] 'B'
    'C' [3.443] 'C'
};

%# compute binary numbers equivalent to letters A to H
binary = num2cell(dec2bin(0:7)-'0');      %# use 0:25 to go up to Z

%# convert letters in to row indices in the above cell array "binary"
idx = cellfun(@(c) c-'A'+1, upper(data(:,1)));

%# replace first column, and build new data
newData = [binary(idx,:) data(:,2:end)]
结果是:

newData = 
    [0]    [0]    [0]    [0.006]    'B'
    [0]    [1]    [0]    [3.443]    'C'

将字母转换成三个数字的规则是什么?