Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
Junho de 2014
Material de Apoio
Helon David de Macêdo Braz 2
Sumário
MOTIVAÇÃO 3
OBJETIVO 3
O PROBLEMA 3
ENTRADA DE DADOS VIA ARQUIVO DO MATLAB® 4
ENTRADA DE DADOS VIA ARQUIVO DE TEXTO 6
ENTRADA DE DADOS VIA PLANILHA DO EXCEL® 7
UM PASSO A FRENTE: LENDO VÁRIAS PLANILHAS NO MESMO ARQUIVO DO EXCEL® 8
Material de Apoio
Helon David de Macêdo Braz 3
Motivação
Objetivo
O objetivo desse material é mostrar três opções para dotar seus scripts Matlab® da opção de
entrada via arquivos:
A numeração adotada reflete uma ordem de prioridades, sendo considerada como alternativa
mais desejável, a leitura dos dados de entrada via planilha do Excel®.
O problema
Para exemplificar as três alternativas de entrada de dados listadas como objetivo desse
material, o primeiro problema prático da seção de LTs do material da disciplina Análise de
Sistemas Elétricos foi escolhido. O problema consiste em:
Escrever rotina em Matlab® que calcule a indutância dos condutores de uma LT Monofásica
bem como sua indutância total em H/m, supondo que são fornecidas tabelas com os dados
dos condutores de ida e de retorno da corrente listando suas posições em um eixo de
coordenadas (X,Y), seus raios e respectivos RMG (raio médio geométrico).
Para exemplificar: considere uma LT Monofásica com três condutores de ida e dois de retorno.
A entrada a ser lida seria algo como:
Alternativamente, poderia haver uma única tabela com uma coluna que identificasse se o
condutor é de ida (1) ou retorno (2):
Nas seções a seguir são mostrados exemplos em que esses dados são lidos. Não desejamos
aqui resolver o problema apresentado, apenas demonstrar como a entrada de dados poderia
ser feita.
- O script abre uma janela de seleção de arquivo usando a função uigetfile e sugerindo o
formato (*.m) próprio do Matlab®;
- O usuário seleciona o arquivo desejado navegando na estrutura de diretórios de sua máquina
de modo que o nome do arquivo e o caminho até ele são retornados por uigetfile nas
variáveis filename e pathname;
- Após conhecer o nome e caminho do arquivo a ser lido, o script executa os comandos que
constam no arquivo de entrada utilizando a função run, obtendo as variáveis X e Y.
- Nesse processo, run recebe o texto gerado pela concatenação do caminho para o arquivo
com seu nome propriamente dito: strcat.
Adotando a segunda opção de entrada, em que há uma única tabela, passa a existir uma etapa
a mais do que havia com duas matrizes independentes: a separação da matriz lida em X e Y. O
código para essa situação é do tipo:
Nesse caso, observe que a matriz lida na entrada de dados se chama temp e após sua
obtenção extraímos X e Y por meio dos comandos:
X = temp(temp(:,1)==1,2:end);
Y = temp(temp(:,1)==2,2:end);
Tomando como base essas linhas de código, alguns comentários podem ser feitos:
- temp é uma matriz de 5x5 (5 linhas e 5 colunas). De forma genérica, para n condutores
temp tem n linhas e 5 colunas;
- O Matlab® permite extrair um elemento da matriz temp fornecendo índices para linha
e coluna, sendo a primeira linha ou coluna identificadas por 1. Assim: temp(2,3) é
igual a 6;
Material de Apoio
Helon David de Macêdo Braz 6
1 0 12
1 0 6 ൩
1 0 0
- Para fornecer linhas ou colunas de interesse, é possível usar uma notação própria do
Matlab® que é especialmente útil para estabelecer intervalos. Por exemplo: no lugar
de [1 2 3] para selecionar as colunas 1, 2 e 3 de temp, é possível simplesmente
fornecer 1:3;
- Na escolha de intervalos, é possível usar palavras reservadas que indicam o início, final
ou mesmo a totalidade do conjunto possível. Por exemplo: end significa o último valor
possível, enquanto “:” quando aparece sozinho significa todos os valores possíveis;
- Por fim, é possível usar os próprios valores da matriz para determinar as linhas ou
colunas de interesse. Por exemplo: temp(:,1)==1 será verdadeiro para toda linha de
temp cujo valor da 1° coluna é igual a 1.
A expressão usada para inicializar a matriz X pode ser descrita como: X recebe uma submatriz
de temp formada pelas linhas em que o valor da 1° coluna é igual a 1 e pelas colunas de 2 até o
final. De forma semelhante, Y recebe uma submatriz de temp formada pelas linhas em que o
valor da 1° coluna é igual a 2 e pelas colunas de 2 até o final.
Essa é a opção mais comum nos programas comerciais, pois permite boa flexibilidade ao
usuário a um custo relativamente pequeno de manipular arquivos de texto. A sequência é a
mesma utilizada antes, sendo a opção de entrada escolhida aquela em que havia uma única
tabela:
- O script abre uma janela de seleção de arquivo sugerindo o formato (*.txt) usando a função
uigetfile;
- O usuário seleciona o arquivo desejado navegando na estrutura de diretórios de sua máquina
de modo que o nome do arquivo e o caminho até ele são retornados por uigetfile;
- O script efetivamente lê os dados fornecidos utilizando a função dlmread que recebe 4
parâmetros de entrada: nome completo do arquivo a ser lido (caminho+nome), caractere a ser
usado como separador dos campos, linha inicial e coluna inicial. Em que, linha inicial e coluna
inicial são contadores que começam em 0;
- Após a rotina dlmread, a variável temp está carregada na memória e basta separar X e Y
como feito anteriormente.
Essa é a opção mais cômoda para o usuário, pois permite ter como arquivo de entrada uma
tabela já com formatação e apresentação adequadas. Por conta dessa facilidade do ponto de
vista do usuário, ela poderia ser a mais complicada para o programador. Porém, o Matlab®
possui a função xlsread que torna a leitura simples de ser implementada. A sequência é a
mesma utilizada antes e mais uma vez a opção de entrada escolhida foi aquela em que há uma
única tabela:
- O script abre uma janela de seleção de arquivo sugerindo o formato (*.xlsx) usando a função
uigetfile;
- O usuário seleciona o arquivo desejado navegando na estrutura de diretórios de sua máquina
de modo que o nome do arquivo e o caminho até ele são retornados por uigetfile;
- O script efetivamente lê os dados fornecidos utilizando a função xlsread que recebe apenas
o nome completo do arquivo a ser lido (caminho+nome);
- Após a rotina xlsread, a variável temp está carregada na memória e basta separar X e Y
como feito anteriormente.
A função xlsread permite ao usuário especificar a planilha em que a leitura deve ser feita.
Basta fornecer o índice identificador da respectiva planilha ou seu nome como um segundo
parâmetro. Nesse caso, vamos atualizar o código apresentado antes para ler duas planilhas do
arquivo de entrada, sendo uma relativa aos dados dos condutores de ida e outra associada aos
dados dos condutores de retorno. O seguinte arquivo de entrada deve ser lido:
Material de Apoio
Helon David de Macêdo Braz 9