如何在MATLAB中将单元格数组转换为数值数组?

时间:2017-11-02 16:55:39

标签: arrays matlab numeric cell-array

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

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

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

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

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

2 个答案:

答案 0 :(得分:4)

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

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

或者更简单,只需使用str2double

labels_numeric = str2double(labels);

答案 1 :(得分:1)

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

>> cellfun(@length, {'apple' 'orange' 'banana'})

ans =

     5     6     6

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

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