【问题标题】:How can I convert a cell array into a numeric array in MATLAB?如何在 MATLAB 中将元胞数组转换为数值数组?
【发布时间】:2017-11-02 16:55:39
【问题描述】:

我在 MATLAB 中遇到了一个据说很简单的问题。我有一个 1x43 元胞数组,看起来像这样(注意每个值之前的空格):

labels = {' 1', ' 2', ' 3', ... , ' 43'};

我只是想将其转换为尺寸为 1x43 的数字向量,如下所示:

labels_numeric = [1 2 3 ... 43];

任何人都可以提示我正确的技巧吗?

【问题讨论】:

    标签: arrays matlab numeric cell-array


    【解决方案1】:

    您可以将collect the individual character arrays 转换为单个字符数组,然后使用str2num 进行转换:

    labels_numeric = str2num([labels{:}]);
    

    或者更简单,只需使用str2double

    labels_numeric = str2double(labels);
    

    【讨论】:

      【解决方案2】:

      gnovice 的回答是针对这个特定问题的最简单的解决方案,但一般来说,如果您想通过对每个元素应用一些转换将元胞数组转换为数字数组,您可以使用cellfun 来实现。例如,如果你向 MATLAB 询问 length({'apple' 'orange' 'banana'}),你会得到 3,但如果你想要数组中每个字符串的长度,你可以这样做:

      >> cellfun(@length, {'apple' 'orange' 'banana'})
      
      ans =
      
           5     6     6
      

      您可以使用匿名函数或已定义函数的句柄作为cellfun 的参数,因此转换可以根据需要变得复杂。

      只要函数的结果是标量数值或逻辑值,cellfun 的输出将是数值或逻辑数组;否则它将是另一个元胞数组(如果它的大小不同,则需要使用 'UniformOutput', false 参数对)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多