MATLAB Преобразование ячейки в двойную и объединение или изменение формы в один столбец

У меня есть широта и долгота в виде ячеек размером 1x7 (в которых внутри каждой ячейки ячейка представляет собой столбец с разным количеством строк). Я хочу преобразовать каждый из 7 столбцов в двойной, а затем объединить их в столбец, чтобы у меня была матрица размером 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

Мне удалось преобразовать в двойное, но я не уверен, как сделать конкатенацию (или изменить форму) в части столбца.

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

person SugaKookie    schedule 14.03.2014    source источник


Ответы (1)


Использовать этот:

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
person Luis Mendo    schedule 14.03.2014
comment
Я кланяюсь, кланяюсь, и вот мой ответ. - person Cape Code; 14.03.2014