如何在 MATLAB 中将元胞数组转换为数值

How do I convert from cell array to numerical values in MATLAB

我想将存储在元胞数组中的字符串中的数值转换为数值数组。

像这样:

IDcell=cell(10,1);
IDcell(:,1)={'A123'};
IDnum(1:size(IDcell,1),1)=str2num(IDcell{:, 1}(1,2:4));

最后一部分是问题。可能的是:

IDnum(1,1)=str2num(IDcell{1, 1}(1,2:4));

但不是一次整个数组。

非常感谢, 斯迈卡

您将需要一个循环:

n = size(IDcell,1);
IDnum = zeros(n, 1);
for i in 1:n
    IDnum(i,1) = str2num(IDcell{i, 1}(1, 2:4));
end

您可能还会发现有趣的是 cellfun

从 16b 开始,新的文本函数和字符串数据类型使这变得简单

>> IDcell=cell(10,1);
>> IDcell(:,1)={'A123'};

>> IDcell = string(IDcell);
>> nums = extractAfter(IDcell,'A');
>> nums = double(nums)

nums =

    123
    123
    123
    123
    123
    123
    123
    123
    123
    123

这里的其他答案都可以。如果您是 运行 相对较新版本的 Matlab,则 Matlabbit 对字符串的使用将起作用。 Hielke 的循环或 cellfun 的使用是我通常做这样的事情的方式。然而,这里有一个替代方案纯粹是因为在 Matlab 中似乎总是有多种方法可以解决问题。

>> IDchar = char(IDcell);
>> nums= str2num(IDchar(:,2:4))

nums=

   123
   123
   123
   123
   123
   123
   123
   123
   123
   123