2016-06-03 2 views
1

В качестве вывода некоторого предыдущего кода я получаю структуру с определенным количеством полей, количество которых может измениться. Я хочу назвать последний из них, но я не знаю, что я должен использовать для вызова имени поля из динамической переменной, так как в соответствии с this page кажется, что я должен использовать круглые скобки, но, похоже, это не работает, поскольку if Я запускаю этот код:Поле структуры вызова из строковой переменной

A = rand(3,1); 
B = rand(4,1); 
C = rand(2,1); 
S = struct('field1',A,'field2',B,'field3',C); 
names = fieldnames(S); 
S.(names(end)); 

я получаю эту ошибку:

Argument to dynamic structure reference must evaluate to a valid field name. 

Почему теперь работает и что я должен использовать?

ответ

1

имя поля функция фактически возврат cell. При использовании гладкой скобки «(», «)», например, в имен (конец), вы на самом деле получает клетку размером 1x1, который содержит строку «field3»:

class(names(end)) 
ans = cell 

В вашем случае следует использовать фигурные скобки для доступа к данным, чтобы получить строковое представление вашего поля. Иными словами, используйте следующий синтаксис:

S.(names{end}) 
+0

Работает отлично. Спасибо за четкое объяснение. – Patapunfate

Смежные вопросы