将包含所有字符串的单元格数组的一部分转换为双精度数

时间:2014-10-12 00:42:25

标签: matlab type-conversion

我有一个包含9列的单元格数组,其中每个单元格包含字符串,但只有第9列实际上是一个字符串,前8个应该是数字。有没有办法将单元格数组的前8列中的每个单元格从包含字符串的单元格转换为包含双精度的单元格?

3 个答案:

答案 0 :(得分:1)

在前8列中单元格的每个元素上使用str2num函数将字符串转换为数字。

答案 1 :(得分:1)

是的,你可以!使用for循环或使用cellfun非常容易:

<强> 1:环 1)让我们创建一个包含字符串的单元格数组:

CellA = sprintfc('%d',1:9) %// Nice function to populate cell array with strings

CellA = 

    '1'    '2'    '3'    '4'    '5'    '6'    '7'    '8'   '9'

2)循环:

for k = 1:size(CellA,2)-1

    CellA{:,k} = str2double(CellA{:,k});

end

CellA %// Display the content of CellA

CellA = 

    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]   '9'

2:Cellfun

CellB = [cellfun(@str2double,CellA(1:end-1),'UniformOutput',false) CellA(end)]

在这种情况下,您将str2double应用于除了单元格数组的最后一个元素之外的所有元素,然后将它们与CellA的最后一个元素(即字符串)连接起来。两种输出都相似。

Etvoilà:)

答案 2 :(得分:1)

你可以不用循环来做:使用str2double从字符串的单元格数组转换为数值数组,然后num2cell将数字数组转换为数字的单元格数组:

myCell(:,1:8) = num2cell(str2double(myCell(:,1:8)));