Преобразование массива строковых массивов в двойной массив - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть массив ячеек 55X1.Каждая ячейка содержит массив чисел размером 1X178.Я хотел бы преобразовать все ячейки в двойной массив, но таким образом, чтобы он формировал двойной массив 55X178.

Возьмем, к примеру, массив ячеек 55X1 dataCellOut = {each cell has a 1X178 string}.Я могу использовать: na=str2num(dataCellOut{1}), и это выведет двойной массив 1X178.Я попытался использовать: na=cellfun(@str2num, dataCellOut, 'UniformOutput', false), и это не работает (ошибка: «ввод должен быть символьным вектором или строковым скаляром»).Я работал над этим некоторое время безрезультатно.

Я надеюсь, что это имеет смысл, и если я могу предложить что-то еще, пожалуйста, не стесняйтесь, дайте мне знать.Заранее спасибо!

1 Ответ

0 голосов
/ 28 сентября 2018

В соответствии с документацией к str2num:

Функция str2num не преобразует массивы ячеек или нескалярные строковые массивы и чувствительна к интервалу вокруг + и - операторы.Кроме того, str2num использует функцию eval, которая может вызывать непреднамеренные побочные эффекты, когда вход содержит имя функции.Чтобы избежать этих проблем, используйте str2double.

str2double, однако, работает так, как вы хотите:

X = str2double(str) конвертируеттекст в str для удвоения значений точности.[...] str может быть символьным вектором, массивом символьных векторов или строковым массивом.[...] Если str является [...] строковым массивом, то X является числовым массивом того же размера, что и str.

Таким образом, это должноработа:

na = cellfun(@str2double, dataCellOut, 'UniformOutput', false);
na = cat(1,na{:});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...