如何在matlab中将二进制数值的数值单元和字符单元合并为一个单元
我有一个7395X28数值的matlab单元,还有一个7395x8字符单元,其中有二进制值。我希望二进制值单元格合并到这个数值单元格中,不做任何更改 例如,让数字单元A和二进制单元B我这样合并它们 C=[A,B] 这给了我一个错误,告诉我不能将字符单元格与数值单元格合并。请任何人帮我解决这个问题 输出应该是一个合并的单元格,单元格的最后一列应该由二进制值组成。请帮助。代码如何在matlab中将二进制数值的数值单元和字符单元合并为一个单元,matlab,Matlab,我有一个7395X28数值的matlab单元,还有一个7395x8字符单元,其中有二进制值。我希望二进制值单元格合并到这个数值单元格中,不做任何更改 例如,让数字单元A和二进制单元B我这样合并它们 C=[A,B] 这给了我一个错误,告诉我不能将字符单元格与数值单元格合并。请任何人帮我解决这个问题 输出应该是一个合并的单元格,单元格的最后一列应该由二进制值组成。请帮助。代码 a1 = num2cell(randi(5,2,3)) %%// cell array of numerical value
a1 = num2cell(randi(5,2,3)) %%// cell array of numerical values
a2 = {'0' '1' '1'; '0' '1' '0' } %%// cell array of characters that are binary numbers
out = num2cell(cell2mat(a1)*10+cell2mat(a2)-'0')
A={1,2,3;
2,3,4;
4,5,6;
7,8,9;
0,9,9}
B={'0001'; '0011'; '0111' ;'1111' ;'0101'}
C = [A cellstr(cell2mat(B))]
A={1,2,3;
2,3,4;
4,5,6;
7,8,9;
0,9,9}
B = ['00000001';'00010001';'00000001';'10110001';'01010011']
C = [A cellstr(B)]
输出
a1 =
[4] [3] [5]
[2] [4] [5]
a2 =
'0' '1' '1'
'0' '1' '0'
out =
[40] [31] [51]
[20] [41] [50]
C =
[1] [2] [3] '0001'
[2] [3] [4] '0011'
[4] [5] [6] '0111'
[7] [8] [9] '1111'
[0] [9] [9] '0101'
C =
[1] [2] [3] '00000001'
[2] [3] [4] '00010001'
[4] [5] [6] '00000001'
[7] [8] [9] '10110001'
[0] [9] [9] '01010011'
编辑1:
代码
a1 = num2cell(randi(5,2,3)) %%// cell array of numerical values
a2 = {'0' '1' '1'; '0' '1' '0' } %%// cell array of characters that are binary numbers
out = num2cell(cell2mat(a1)*10+cell2mat(a2)-'0')
A={1,2,3;
2,3,4;
4,5,6;
7,8,9;
0,9,9}
B={'0001'; '0011'; '0111' ;'1111' ;'0101'}
C = [A cellstr(cell2mat(B))]
A={1,2,3;
2,3,4;
4,5,6;
7,8,9;
0,9,9}
B = ['00000001';'00010001';'00000001';'10110001';'01010011']
C = [A cellstr(B)]
输出
a1 =
[4] [3] [5]
[2] [4] [5]
a2 =
'0' '1' '1'
'0' '1' '0'
out =
[40] [31] [51]
[20] [41] [50]
C =
[1] [2] [3] '0001'
[2] [3] [4] '0011'
[4] [5] [6] '0111'
[7] [8] [9] '1111'
[0] [9] [9] '0101'
C =
[1] [2] [3] '00000001'
[2] [3] [4] '00010001'
[4] [5] [6] '00000001'
[7] [8] [9] '10110001'
[0] [9] [9] '01010011'
编辑2:
代码
a1 = num2cell(randi(5,2,3)) %%// cell array of numerical values
a2 = {'0' '1' '1'; '0' '1' '0' } %%// cell array of characters that are binary numbers
out = num2cell(cell2mat(a1)*10+cell2mat(a2)-'0')
A={1,2,3;
2,3,4;
4,5,6;
7,8,9;
0,9,9}
B={'0001'; '0011'; '0111' ;'1111' ;'0101'}
C = [A cellstr(cell2mat(B))]
A={1,2,3;
2,3,4;
4,5,6;
7,8,9;
0,9,9}
B = ['00000001';'00010001';'00000001';'10110001';'01010011']
C = [A cellstr(B)]
输出
a1 =
[4] [3] [5]
[2] [4] [5]
a2 =
'0' '1' '1'
'0' '1' '0'
out =
[40] [31] [51]
[20] [41] [50]
C =
[1] [2] [3] '0001'
[2] [3] [4] '0011'
[4] [5] [6] '0111'
[7] [8] [9] '1111'
[0] [9] [9] '0101'
C =
[1] [2] [3] '00000001'
[2] [3] [4] '00010001'
[4] [5] [6] '00000001'
[7] [8] [9] '10110001'
[0] [9] [9] '01010011'
如果你能提供一个最小的(非)工作示例来重现不希望出现的行为,人们会非常乐意帮助你。我假设输出是一个数值单元格数组,对吗?您好,先生,事实上,B数组是一个字符数组,当我打开它时,matlab会显示val=0000000 1,依此类推,当我按照您的建议执行操作时,它会从非单元格数组对象向我提供此错误单元格内容引用。cell2mat(第43行)中的错误cellclass=class(c{1});使用一些示例输入和输出编辑您的问题。不,如果A={1,2,3,3,4,5,6,7,8,9,0,9,9}和B={0001 0011 0111 1111 0101},那么C={1,2,30001 2,3,40011 4,5,60111 7,8,91111 0,9,90101}希望我自己清楚,如果我合并7395X28和7395x8,我想要一个7395X29大小的牢房?@Hari签出Edit-1,希望这就是你想要的。@Hari签出Edit 2,真的希望这次它对你有用!先生,仍然有错误,让我解释清楚,从一开始,我有一个具有不同特征的数据集,每个特征在不同的单元中导入到matlab中。所有的特征都有数值,除了由字符串值组成的1,我使用代码B=dec2bin(cellfun(@(string)find)(strcmp(string,unique(alchemycategory,'stable')),1,'first'),alchemycategory),8将这些字符串值转换成二进制;在那之后,我把所有的数字特征单元格合并成1,我想把二进制单元格合并成1,但是我做不到,请帮助