如何在 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
我想将存储在元胞数组中的字符串中的数值转换为数值数组。
像这样:
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