【问题标题】:How to merge numerical cell and char cell of binary values into 1 cell in matlab如何在matlab中将二进制值的数字单元格和char单元格合并为1个单元格
【发布时间】:2014-04-05 18:35:35
【问题描述】:

我有一个 7395X28 数值的 matlab 单元格,我有一个 7395x8 的另一个字符单元格,其中有二进制值。我希望将二进制值单元格合并到这个数值单元格中而不做任何更改。

例如让数字单元格为 A 和二进制单元格 B 我像这样合并它们

C=[A,B]

这给了我一个错误,说您不能将字符单元格与数值单元格合并。请任何人帮助我解决这个问题

输出应该是一个合并的单元格,并且单元格的最后一列应该由二进制值组成。请帮忙。

【问题讨论】:

  • 如果您可以提供一个最小(非)工作示例来重现不良行为,人们将非常乐意为您提供帮助。
  • 我假设输出将是一个数值元胞数组,对吧?
  • 嗨,先生,实际上 B 数组是一个字符数组,当我打开它 matlab 它显示我 val = 00000001 等等,当我按照你的建议进行操作时,它给了我这个错误 Cell contents reference from a非元胞数组对象。 cell2mat 中的错误(第 43 行) cellclass= class(c{1});
  • 使用一些示例输入和输出来编辑您的问题。这也可能有助于我们回答。

标签: matlab


【解决方案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') 

输出

a1 = 

    [4]    [3]    [5]
    [2]    [4]    [5]


a2 = 

    '0'    '1'    '1'
    '0'    '1'    '0'


out = 

    [40]    [31]    [51]
    [20]    [41]    [50]

编辑 1:

代码

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))]

输出

C = 

    [1]    [2]    [3]    '0001'
    [2]    [3]    [4]    '0011'
    [4]    [5]    [6]    '0111'
    [7]    [8]    [9]    '1111'
    [0]    [9]    [9]    '0101'

编辑 2:

代码

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)]

输出

C = 

    [1]    [2]    [3]    '00000001'
    [2]    [3]    [4]    '00010001'
    [4]    [5]    [6]    '00000001'
    [7]    [8]    [9]    '10110001'
    [0]    [9]    [9]    '01010011'

【讨论】:

  • 如果 A={1,2,3 2,3,4 4,5,6 7,8,9 0,9,9} 和 B={0001 0011 0111 1111 0101} 则否C={1,2,3,0001 2,3,4,0011 4,5,6,0111 7,8,9,1111 0,9,9,0101} 希望我说清楚了
  • 那么,如果我合并 7395X28 和 7395x8,我会得到一个 7395X29 大小的单元格数组?
  • @Hari Check out Edit -1,希望这就是你所追求的。
  • @Hari 查看编辑 2,真的希望这次对你有用!
  • 先生仍然出现错误,让我从一开始就清楚地解释一下,我有一个具有不同特征的数据集,每个特征都导入到不同单元格的 matlab 中。除 1 外,所有特征都有数值,它由字符串值组成,我使用此代码将这些字符串值转换为二进制 B = dec2bin(cellfun(@(string) find(strcmp(string, unique(alchemycategory, 'stable')), 1 , 'first'), alchemycategory), 8);之后,我将所有数字特征单元格合并为 1,我想将二进制单元格合并到其中,但我无法做到,请帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-10
相关资源
最近更新 更多