MATLAB将单元格转换为double并连接或重新整形为一列

时间:2014-03-14 15:17:16

标签: matlab concatenation cell mat

我有lat和lon作为大小为1x7的单元格(其中每个单元格内部,单元格是具有不同行数的列)。我想将7列中的每一列转换为double,然后将它们连接成一列,以便我有一个大小为216x1的矩阵。

例如(缩短版),如果

 lat{1,1}
'40.400959'
'40.695078'
'40.969112'
'41.264171'
'41.400968'
'41.517772'
'41.530011'
'41.550005'
'41.583183'
'41.603159'

 lat{1,2}
'38.082155'
'38.176278'
'38.529631'
'38.612034'
'38.700632'

然后,我希望以双重形式:     40.400959     40.695078     40.969112     41.264171     41.400968     41.517772     41.530011     41.550005     41.583183     41.603159     38.082155     38.176278     38.529631     38.612034     38.700632

我设法转换为double,但我不确定如何连接(或重塑)到列部分。

for i = 1:7
    lat = str2double(lat_PM25{i});
    lon = str2double(lon_PM25{i});
end

1 个答案:

答案 0 :(得分:4)

使用此:

str2double(vertcat(lat{:}))

如何运作

lat{:}为您提供逗号分隔的单元格内容列表。每个单元格内容又是一个单列单元格字符串数组(我假设)。

vertcat将所有字​​符串的单列单元格数组连接成一个单列的字符串数组。

str2double将每个字符串转换为double个数字,并将所有这些数字打包成一个列向量。

实施例

lat{1,1} = {
'40.400959'
'40.695078'
'40.969112'
'41.264171'
'41.400968'
'41.517772'
'41.530011'
'41.550005'
'41.583183'
'41.603159'};

lat{1,2} = {
'38.082155'
'38.176278'
'38.529631'
'38.612034'
'38.700632'};

给出

ans =
   40.4010
   40.6951
   40.9691
   41.2642
   41.4010
   41.5178
   41.5300
   41.5500
   41.5832
   41.6032
   38.0822
   38.1763
   38.5296
   38.6120
   38.7006