Как я могу изменить массив ячеек, состоящий из int 32 и double в матрицу значений типа double? - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть структура, которую я хочу изменить на матрицу.Итак, я получил cell2mat(struct2cell(d)).Но struct2cell(d) дает мне

6×1 cell array

{1100×1 int32 }
{1100×1 int32 }
{1100×1 int32 }
{1100×1 int32 }
{1100×1 double}
{1100×1 double}

, а cell2mat(struct2cell(d)) дает мне ошибку:

Все содержимое входного массива ячеек должно быть одного типа данных.

Итак, мой вопрос, как я могу преобразовать их все в удвоение?Или как мне наконец получить матрицу?

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете разыграть каждый элемент вашей ячейки с помощью cellfun (который в основном скрыт для цикла):

%Dummy data
s.a = int16([1:4])
s.b = linspace(0,1,4)

%struct -> mat
res = struct2cell(s);
res = cellfun(@double,res,'UniformOutput',0) %cast data type to double
res = cell2mat(res)
...