Цикл извлечения информации из структуры не работает? - PullRequest
2 голосов
/ 14 мая 2010

У меня есть структура в Matlab, которая имеет значение <1x1 struct>., ее имя figurelist Внутри этой структуры есть поле под названием images. Внутри изображений у меня 25 изображений с именем img1, img2, img3, ..... , img25.

Теперь я сделал цикл for для извлечения этих изображений, я в основном сделал:

 For K=1:25
     image(figurelist.images.imgK)
     PAUSE(0.25)
 End

Это, к сожалению, не работает. Я получаю сообщение об ошибке:

??? Reference to non-existent field 'imgK'.

Можно ли извлечь такую ​​информацию, используя цикл из структуры? Или я что-то не так делаю? Спасибо.

Ответы [ 2 ]

4 голосов
/ 14 мая 2010

Вы должны сделать что-то вроде этого:

for K=1:25
  image(figurelist.images.(['img' int2str(K)]))
  pause(0.25)
end

Поскольку имя поля является функцией вашей переменной цикла, вы должны создать строку для имени поля. Функция INT2STR преобразует значение вашей переменной цикла K в строку символов, которая затем добавляется к 'img', чтобы создать строку для имени поля. Затем для доступа к значению поля с использованием этой строки используется синтаксис ссылки на динамическое поле (.( )).

Несколько хороших примеров использования динамических имен полей можно найти в блоге Лорен и блоге Дуга .

2 голосов
/ 14 мая 2010

Я считаю, что вы ищете динамические имена полей: http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/br04bw6-38.html#br1v5cc-1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...