Como criar e acessar a estrutura que corresponde a determinada lista de variáveis no matlab? [duplicado]
Esta questão já tem uma resposta aqui:
Como eu acesso campos de estrutura dinamicamente? 6 respostasEu gostaria de criar uma estrutura para armazenar os dados do banco de dados.
Eu criei uma função
function result = LoadDataFromDB(query, columnNames)
onde os nomes das colunas representam a lista de nomes das colunas, por exemplo {'id', 'year', 'name' ...}
Depois de executar a seguinte consulta
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
Eu gostaria de preencher a estrutura, mas não descobri como acessar dinamicamente os campos na estrutura.
Aqui está o código que deve criar e preencher a estrutura:
varnamelist = genvarname(columnNames);
result = cell2struct(cell(size(varnamelist(:))), varnamelist(:));
while rs.next()
count=count+1;
for i = 1 : length(columnNames)
fieldname = columnNames(i);
value = char(rs.getString(i));
%result(count).columnNames(i)=char(rs.getString(i));
result(count).(fieldname) = value;
end
end
O principal problema é a linha
result(count).(fieldname) = value;
Para descrever um problema abaixo está a cópia da saída do console:
K>> result(1)
ans =
a: []
b: []
c: []
K>> result(1).('a')
ans =
[]
K>> fieldname
fieldname =
'a'
Concluindo a partir da saída acima, o resultado do comando (1). (Fieldname) deve acessar o campo 'a', mas experimentando, retorna o seguinte erro:
K>> result(1).(fieldname)
??? Argument to dynamic structure reference must evaluate to a valid field name.
Alguém sabe como preencher a estrutura dinamicamente?