Estruturas de array no Matlab
Imagine que você deseja dominar o uso de estruturas no Matlab. Pois bem, saiba que não é um bicho de sete cabeças. Uma estrutura é, em essência, um conjunto de dados acessíveis por meio de seus nomes. No Matlab, a criação de uma estrutura se dá pela função "struct". Vou te guiar, passo a passo, pelo uso das estruturas no Matlab.
O que são estruturas? As estruturas são semelhantes aos arrays, mas possuem maior versatilidade. Enquanto um array armazena dados de um único tipo, as estruturas permitem armazenar variados tipos de dados, organizados em campos. Cada campo tem um nome único, facilitando a gestão de informações. Por exemplo, uma agenda telefônica é uma estrutura de array típica.
Como criar uma estrutura de array?
Crie uma estrutura com o nome "agenda".
O primeiro campo da estrutura é o "nome" dos contatos da agenda.
>> agenda.nome="João Silva";
A seguir, adicione o segundo campo da estrutura.
Este campo é o "número de telefone" de cada contato.
>> agenda.telefone=123456789;
Um campo pode abrigar valores numéricos, strings e até arrays.
>> agenda(1).telefone=[123456789, 987654321];
Por fim, inclua o terceiro campo da estrutura, destinado ao endereço da pessoa.
>> agenda.endereco="Nova York";
Como alternativa, é possível criar uma estrutura de modo conciso, utilizando a função struct() e especificando todos os campos em um único comando.
>> agenda = struct('nome','João Silva','telefone',123456789, 'endereco', 'Nova York')
Com isso, você terá criado uma estrutura chamada "agenda", contendo um registro e três campos: nome, número de telefone e endereço.
Observação. Os campos da estrutura apresentam tipos de dados distintos: dois deles contêm valores alfanuméricos (nome e endereço), enquanto um é numérico (número de telefone).
É possível também expandir uma estrutura, inserindo múltiplos registros. Para isso, basta escrever os nomes dos campos uma única vez, agrupando os dados de cada campo individualmente entre chaves.
C = struct('disciplina',{'Matemática', 'Latim', 'Ciências'},'nota',{27,30,18});
Visualizando os campos da estrutura
Para visualizar os campos de uma estrutura, utilize a função fieldnames().
>> fieldnames(agenda)
ans =
{
[1,1] = nome
[2,1] = telefone
[3,1] = endereco
}
Esta função apresenta os nomes dos campos da estrutura listados entre parênteses.
Neste exemplo, a estrutura possui três campos: nome, número de telefone e endereço. Todos os registros da estrutura compartilham esses mesmos campos.
Adicionando dados à estrutura
Após estabelecer a estrutura de campos, você pode enriquecê-la com registros, isto é, as informações que ela conterá.
Para adicionar um segundo registro, por exemplo, basta referenciar o nome da estrutura com o índice 2 e especificar o campo à esquerda, seguido do valor à direita.
>> agenda(2).nome="Ana Souza";
>> agenda(2).telefone="987654321"
;;
Com isso, a estrutura passa a contar com dois registros. Note que é possível inserir um novo registro mesmo deixando alguns campos vazios, como no caso do endereço ausente no segundo registro.
>> agenda(2)
ans =
estrutura escalar contendo os campos:
nome = Ana Souza
telefone = 987654321
endereco = [](0x0)
Outra maneira de inserir um novo registro é por meio da função struct().
>> agenda(3) = struct('nome','Carlos Dias','telefone',123456789, 'endereco', 'Los Angeles')
Lendo dados de uma estrutura
Para acessar os dados contidos em uma estrutura, escreva o nome da estrutura, seguido do índice entre parênteses e do nome do campo de interesse após um ponto.
Assim, para acessar o número de telefone no primeiro registro, basta digitar agenda(1).telefone.
>> agenda(1).telefone
ans = 123456789
De maneira similar, para consultar o número de telefone no segundo registro, use agenda(2).telefone.
>> agenda(2).telefone
ans = 987654321
Para exibir todos os dados no campo "telefone" da estrutura "agenda", digite agenda.telefone.
>> agenda.telefone
ans = 123456789
ans = 987654321
Para obter todos os dados dos campos do primeiro registro, utilize agenda(1).
>> agenda(1)
ans =
estrutura escalar contendo os campos:
nome = João Silva
telefone = 123456789 987654321
endereco = Nova York
Removendo um campo da estrutura
Para excluir um campo de uma estrutura, emprega-se a função rmfield().
Por exemplo, ao adicionar um novo campo "teste" à estrutura.
>> agenda(2).teste="ABC";
Com isso, a estrutura passa a ter quatro campos: nome, telefone, endereço e teste.
>> fieldnames(agenda)
ans =
{
[1,1] = nome
[2,1] = telefone
[3,1] = endereco
[4,1] = teste
}
Para remover o campo "teste", digite rmfield(agenda, "teste").
>> agenda=rmfield(agenda, "teste");
Assim, o campo "teste" é eliminado da estrutura.
>> fieldnames(agenda)
ans =
{
[1,1] = nome
[2,1] = telefone
[3,1] = endereco
}