итеративное определение свойств объекта - PullRequest
3 голосов
/ 19 июня 2011

Скажем, у вас есть объект A со свойством B, и вы хотите определить некоторые параметры A.B (скажем, A.B.n1 , A.B.n2 , ....), поскольку этих параметров много, и вы хотели бы сделать это итеративно.У меня проблема в том, что всякий раз, когда я пытаюсь сделать это итеративно:

for j=1:4
    S=strcat('n',int2str(j));
    A.B.S=j;
end

я определяю только A.B.S=4 и не создаю A.B.n1=1 , A.B.n2=2,...,A.B.n4=4.

Как это возможночтобы MATLAB понял, что я хочу, чтобы S была переменной?

1 Ответ

5 голосов
/ 19 июня 2011

Вы хотите использовать динамические имена полей для доступа к данным структуры:

S = strtrim(cellstr(num2str((1:10)','n%d')));   %#'
for i=1:numel(S)
    A.B.(S{i}) = i;
end

Результат

>> A.B
ans = 
     n1: 1
     n2: 2
     n3: 3
     n4: 4
     n5: 5
     n6: 6
     n7: 7
     n8: 8
     n9: 9
    n10: 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...