доступ к данным структуры (matlab) - PullRequest
6 голосов
/ 18 февраля 2011

a= struct('a1',{1,2,3},'a2',{4,5,6})

как я могу получить значение 1;

Я пытаюсь использовать a.a1 {1}, который возвращает ошибки

>> a.a1{1}
??? Field reference for multiple structure elements that is followed by more reference blocks is an
error.

Как я могу получить доступ к 1? Спасибо.

Редактировать A = struct{'a1',[1 2 3],'a2',[4 5 6]}

Как получить доступ 1. Я использую A(1).a1, но я получаю 1 2 3

1 Ответ

13 голосов
/ 18 февраля 2011

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

a(1).a1

Причина в том, что код, который вы используете для создания вашей структуры, фактически создает массив из 3 элементов, где первый элемент массива содержит a1: 1 иa2: 4, второй элемент массива содержит a1: 2 и a2: 5, а третий элемент массива содержит a1: 3 и a2: 6.

При использовании фигурных скобок {} при вызове STRUCT Как и вы, MATLAB предполагает, что вы хотите создать структурный массив, в котором вы распределяете содержимое ячеек по элементам структурного массива.Если вместо этого вы хотите создать один структурный элемент 1-на-1, в котором поля содержат массивы ячеек, вам необходимо добавить дополнительный набор фигурных скобок, охватывающих массивы ваших ячеек, например:

a = struct('a1',{{1,2,3}},'a2',{{4,5,6}});

Тогдаваш оригинальный a.a1{1} будет работать.

РЕДАКТИРОВАТЬ:

Если вы создаете свою структуру, используя числовые массивы вместо массивов ячеек, например:

A = struct('a1',[1 2 3],'a2',[4 5 6]);

Затем вы можете получить доступ к значению 1 следующим образом:

A.a1(1)

Для получения дополнительной информации о работе со структурами в MATLAB, посмотрите эту страницу документации .

...