str2double返回NaN MATLAB

时间:2018-10-10 15:49:12

标签: arrays string matlab double

我有一个岩石类型的向量,形式为

new = current.replace("1","011")
    = 0011011  #not what I wanted

我对岩石的数量感兴趣,因此我设法使用

Rock_1             '1' % What I get after use regexp%
Rock_2             '2' 
.                  . 
.      --------->  . 
.                  .
Rock_n             'n'

然后,我需要将数字的单元格数组转换为数字矩阵,以便进行统计处理。问题是使用Rocks = regexp(P(:,3),'\d*','Match') 之后,我得到了一个充满NaN的数组。我看不到我在做什么错。请帮助。

非常感谢。

1 个答案:

答案 0 :(得分:3)

我认为您的问题是regexp的输出是字符串单元格数组的单元格数组(即两个级别的单元格封装),但是您希望它是字符串单元格数组。您可以通过将'once' option添加到对regexp的调用中来实现。然后,您将获得一个可以传递给str2double的字符串单元格数组:

>> P = {'Rock_1', 'Rock_2', 'Rock_3'};  % Sample data
>> Rocks = regexp(P, '\d*', 'match');   % How you did it above
>> str2double(Rocks)

ans =

   NaN   NaN   NaN

>> Rocks = regexp(P, '\d*', 'match', 'once');  % With the 'once' option
>> str2double(Rocks)

ans =

     1     2     3