Вы должны сделать это вместо этого:
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, посмотрите эту страницу документации .