Как назначить массивы ячеек для поля во вложенной структуре? - PullRequest
0 голосов
/ 24 октября 2019

Предположим, у меня есть массив ячеек, который я хочу присвоить вложенному полю.

myArray = {{ 1     2     3     4     5}; 
           { 7     8     9     10    11    12    13}}

Я хочу, чтобы конечный результат был что-то вроде:

myStruct(1).field = { 1     2     3     4     5}
myStruct(2).field = { 7     8     9     10    11    12    13}

Без необходимости доступа к каждому отдельному полю, как я делаю в приведенном выше примере. Кроме того, я хочу избежать использования цикла for.

Наконец, как мы выполняем обратное (опять же без доступа к отдельным полям или без использования цикла for): извлечение myArray из структуры myStruct?

1 Ответ

0 голосов
/ 24 октября 2019

Для этого есть две очень специфические функции MATLAB: cell2struct и struct2cell.

Для первого преобразования вам просто нужно обратить вниманиеиспользовать правильную ось, выбрав правильный параметр dim. Здесь у вас есть массив ячеек 2 x 1, так что это dim = 2.

Для второго преобразования вы можете просто использовать struct2cell как есть.

Вот полный код:

myArray = {{ 1     2     3     4     5}; 
           { 7     8     9     10    11    12    13}}

myStruct = cell2struct(myArray, 'field', 2);
myStruct(1).field
myStruct(2).field

myArrayAgain = struct2cell(myStruct).'

Выходные данные выглядят так (сокращенно):

  myArray =
  {
    [1,1] =
    {
      [1,1] =  1
      [1,2] =  2
      [...]
    }

    [2,1] =
    {
      [1,1] =  7
      [1,2] =  8
      [...]
    }

  }

  ans =
  {
    [1,1] =  1
    [1,2] =  2
    [...]
  }

  ans =
  {
    [1,1] =  7
    [1,2] =  8
    [...]
  }

  myArrayAgain =
  {
    [1,1] =
    {
      [1,1] =  1
      [1,2] =  2
      [...]
    }

    [2,1] =
    {
      [1,1] =  7
      [1,2] =  8
      [...]
    }

  }

Надеюсь, это поможет!

...