Объединить числа из вложенных ячеек в строки даты - PullRequest
1 голос
/ 30 марта 2020

У меня есть массив ячеек с ячейками, как в

sCell =
    {
      [1,1] =
      {
        [1,1] = 2020
        [1,2] = 03
        [1,3] = 04
      }

      [1,2] =
      {
        [1,1] = 2020
        [1,2] = 03
        [1,3] = 05
      }

      [1,3] =
      {
        [1,1] = 2020
        [1,2] = 03
        [1,3] = 06
      }

      ...
    }

И я хочу

[1,1] = 2020-03-06
[1,2] = 2020-03-05

et c.

Я попытался обратиться с помощью фигурных скобок но не удалось без использования for .. endfor.

Эта функция, но я хочу избавиться от for для l oop:

```
for jj=1:3; 
sd(1,jj)=strcat(sCell{jj}{1,1},'-',sCell{jj}{1,2},'-',sCell{jj}{1,3}); 
endfor 
```

Есть ли более быстрый / компактный способ?

1 Ответ

1 голос
/ 30 марта 2020

Более совместимый способ:

A = reshape([[sCell{:}]{:}], 3, []).';
A = [A zeros(size(A))]
result = cellstr(datestr(A, 'yyyy-mm-dd'));

Оператор [cell{:}] может использоваться для преобразования массива ячеек в массив содержимого ячеек. Примените оператор дважды, чтобы преобразовать вложенные ячейки в вектор чисел. Используйте reshape и transpose, чтобы сформировать матрицу чисел [m x 3] и добавить к ней три столбца нулей, чтобы ее можно было использовать в качестве матрицы векторов даты в datestr. Наконец, используйте cellstr, чтобы сформировать массив ячеек строк даты.

...