【问题标题】:How to convert the elements of a cell array from double to char? [closed]如何将单元格数组的元素从 double 转换为 char? [关闭]
【发布时间】:2020-06-10 16:59:40
【问题描述】:

所以,

我有一个像这样的单元阵列(1x5 单元):

{[1111] [1111] [1010] [1000] [1011]}

单元格数组中的元素是 double 类型,但我希望它们是 char 类型,如下所示:

{'1111' '1111' '1010' '1000' '1011'}

我尝试用 num2str 转换它们,但我收到错误 Undefined function 'abs' for input arguments of 'cell' 类型。,基本上意味着我不能将函数 num2str 用于单元格数组

有人知道如何将单元格数组中的 double 转换为 char 吗?

【问题讨论】:

    标签: matlab char double cell-array


    【解决方案1】:

    您可以loop 覆盖所有单元格。

    input = {1111, 1111, 1010, 1000, 1011};
    output = cellfun(@num2str, input, 'un', 0);
    
    >> output
    output =
      1×5 cell array
        {'1111'}    {'1111'}    {'1010'}    {'1000'}    {'1011'}
    

    或者,自 R2016b 以来有这个 string 类可用,它可能与您的案例相关:

    outstr = string(input);
    
    >> outstr
    outstr = 
      1×5 string array
        "1111"    "1111"    "1010"    "1000"    "1011"
    

    但是,如果您严格要求每个单元格中包含字符的单元格数组,您可以进一步使用cellstr

    output = cellstr(outstr);
    

    【讨论】:

    • 我试过了,但我得到了这样的输出:{'1 1 1 1' .......}。由于某种原因,matlab 在每一位之间添加了一些空格
    • @Γιάννης 你跑了什么?您是否尝试运行第一个代码块(包括您的输入和 cellfun)
    • 是的,我尝试了第一个代码块 :output=[cellfun(@num2str,input(1:end),'un',0)] 其中输入是我的初始单元格数组,其元素类型为 double
    • 并不是说它会有所不同,但上面的行不是我写的内容的复制粘贴:你也在那一行之前运行了input = {1111, 1111, 1010, 1000, 1011}; 吗?请按照答案中的说明完全运行第一个块
    • 是的,我用您的输入进行了尝试,效果很好。在我的情况下,我有一个 1x5 元胞数组,元胞数组的每个元素都是 1x4 双倍。也许这有帮助?
    猜你喜欢
    • 2015-09-02
    • 2017-02-17
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    相关资源
    最近更新 更多