Você está na página 1de 8

Treinamento em MATLAB - Manipulando arquivos Comando textread

Lzaro

L arquivos ASCII formatados como colunas de dados, em que cada coluna pode ter um tipo diferente. A forma do comando textread : [a,b,c,...] = textread(arquivo,formato,n,param,value...) arquivo : o nome do arquivo a ser aberto formato : uma cadeia de caracteres que contm uma descrio do tipo de dados em cada coluna n : o nmero de linhas a serem lidas (se n no for includo, o comando l at o fim do arquivo). A quantidade de argumentos de sada precisa casar com o nmero de colunas lidas.

As opes param e value, possibilitam personalizar a leitura do arquivo, como mostra abaixo:

1) Crie o arquivo "alunos.txt": Joao Maria Jose Ana A+ O+ AA+ 20 22 19 18 1.70 1.65 1.72 1.62

2) Execute os seguintes comandos no MATLAB: >> [nome,tipo,idade,altura] = textread('alunos.txt','%s %s %f %f') nome = 'Joao' 'Maria' 'Jose' 'Ana' tipo = 'A+' 'O+' 'A-' 'A+' idade = 20 22 19 18 altura = 1.7000 1.6500 1.7200 1.6200 >> [nome,tipo,idade,altura] = textread('alunos.txt','%s %s %f %f',2) 3) Execute o comando, para ignorar o campo idade: >> [nome,tipo,altura] = textread('alunos.txt','%s %s %*f %f')

4) Qual o comando, para ignorar o campo nome? 5) Execute os seguintes comandos no matlab >> [data,open,high,low,close,volume,adj_close] = textread('vale.csv','%s %f %f %f %f %f %f','headerlines',1,'delimiter',',')

>> plot(datenum(data,'yyyy-mm-dd',1),volume) >> grid on >> datetick('x',10)

6) Repita o item 5, utilizando os arquivos petrobras.csv, e microchip.csv. 7) Repita o item 5, mas plote agora a opcao close 8) Leia o arquivo vale.csv, mas somente os campos date e volume. 9) Crie o arquivo dados.txt : 1,2,3,4,,6 7,8,9,,11,12 10) Execute o comando no Matlab: >> data = textread('dados.txt','','delimiter',',','emptyvalue', NaN) data = 1 7 2 8 3 9 4 NaN NaN 11 6 12

Comandos dlmwrite e dlmread O comando dlmwrite escreve arquivos ASCII delimitados e o comando dlmread l arquivos ASCII delimitados. dlmread('arquvo',delimitador, R, C) 11) Digite os seguintes comandos: >> M = gallery('binomial',5) M = 1 1 1 1 1 4 2 0 -2 -4 6 0 -2 0 6 4 -2 0 2 -4 1 -1 1 -1 1

>> dlmwrite('arquivo_binomial.txt', M, 'delimiter', '\t') >> dlmread('arquivo_binomial.txt') >> dlmread('arquivo_binomial.txt', '\t', 2, 3) ans = 0 2 -4 1 -1 1

>> M = magic(3) M = 8 3 4 1 5 9 6 7 2

>> dlmwrite('matriz.txt', [M*5 M/5], ' ') >> dlmwrite('matriz.txt', rand(3), '-append', 'roffset', 1, 'delimiter',' ') >> type matriz.txt 40 5 30 1.6 0.2 1.2

15 25 35 0.6 1 1.4 20 45 10 0.8 1.8 0.4 0.81472 0.91338 0.2785 0.90579 0.63236 0.54688 0.12699 0.09754 0.95751 >> dlmread('matriz.txt') ans = 40.0000 15.0000 20.0000 0.8147 0.9058 0.1270 5.0000 25.0000 45.0000 0.9134 0.6324 0.0975 30.0000 35.0000 10.0000 0.2785 0.5469 0.9575 1.6000 0.6000 0.8000 0 0 0 0.2000 1.0000 1.8000 0 0 0 1.2000 1.4000 0.4000 0 0 0

Comandos xlswrite e xlsread Acessa planilhas do Excel. 12) Crie a seguinte planilha no Excel, e salve como teste_excel1.xls:

13) Execute os seguintes comandos no MATLAB: >> A = xlsread('teste_excel1.xls') A = 1 2 3 4 5 6 7 8 9 10

14) Crie a seguinte planilha no Excel, e salve como teste_excel2.xls:

15) Execute os seguintes comandos no MATLAB: >> A = xlsread('teste_excel2.xls') A = 1 2 3 4 5 6 7 8 9 NaN

>> A = xlsread('teste_excel2.xls',1,'A4:B5')

%importa apenas as linhas 4 e 5 %da planilha 1

A = 4 5 9 NaN

16) Crie a seguinte planilha no Excel, e salve como dados_temp.xls, e renomeie o nome da planilha para Temperaturas:

16) Execute os seguintes comandos no MATLAB: >> ndata = xlsread('dados_temp.xls','Temperaturas') ndata = 12 13 14 15 28 29 27 28

>> [ndata, cabecalho] = xlsread('dados_temp.xls','Temperaturas') ndata = 12 13 14 15 28 29 27 28

cabecalho = 'horario' 'temp'

17) Crie a seguinte planilha no Excel, e salve como teste_excel3.xls:

18) Crie o arquivo setMinMax.m :

function [DataRange] = setMinMax(DataRange) maxval = 2000; minval = 0; for k = 1:DataRange.Count v = DataRange.Value{k}; if v > maxval || v < minval if v > maxval DataRange.Value{k} = maxval; else DataRange.Value{k} = minval; end end end 19) Digite os seguintes comandos no MATLAB: >> arr = xlsread('teste_excel3.xls', '', '','',@setMinMax) arr = 233 1223 0 2000 333 564 467 1090 1234 230 700 899 120 2000 2000 2000 0 2000 2000 2000

20) Modifique a funo setMinMax, para que maxval seja 3000 e minval seja 300; 21) Modifique a funo setMinMax, como mostra a seguir:

function [DataRange, indices] = setMinMax(DataRange) maxval = 2000; minval = 0; indices = []; for k = 1:DataRange.Count v = DataRange.Value{k}; if v > maxval || v < minval if v > maxval DataRange.Value{k} = maxval; else DataRange.Value{k} = minval; end indices = [indices k]; end end

22) Digite os seguintes comandos no MATLAB:

>> [arr txt raw idx] = xlsread('teste_excel3.xls', '', '','',@setMinMax) arr = 233 1223 0 2000 333 564 467 1090 1234 0 700 899 120 2000 2000 2000 0 2000 2000 2000

txt = {}

raw = [ 233] [1223] [ 0] [2000] [ 333] [ 564] [ 467] [1090] [1234] [ 0] [ 700] [ 899] [ 120] [2000] [2000] [2000] [ 0] [2000] [2000] [2000]

idx = 3 4 10 14 15 16 17 18 19 20

23) Digite os seguintes comandos no MATLAB:

>> xlswrite('teste_excel4',[45.3 5.5 -79 0 -0.23 40])

Verifique se foi criada a planilha teste_excel4.xls no diretorio de trabalho.

>> s = xlswrite('tempdata.xls', d, 'Temperaturas', 'E1') Verifique se foi criada a planilha tempdata.xls no diretorio de trabalho.

Modifique para que a planilha seja criada na celula D2.

>> [tipo, planilha] = xlsfinfo('tempdata.xls')

Comandos csvread e csvwrite L e escreve arquivos no formato CSV (separado por virgulas) 24) Digite os seguintes comandos no MATLAB: >> m = [3 6 9 12 15; 5 10 15 20 25; 7 14 21 28 35; 11 22 33 44 55]; >> csvwrite('lista_csv.dat',m) >> type lista_csv.dat 3,6,9,12,15 5,10,15,20,25 7,14,21,28,35 11,22,33,44,55

>> csvwrite('lista_csv.dat',m',0,2) >> type lista_csv.dat ,,3,5,7,11 ,,6,10,14,22 ,,9,15,21,33 ,,12,20,28,44 ,,15,25,35,55

>> csvread('lista_csv.dat')

>> m = csvread('lista_csv.dat',1,2)

>> m = csvread('lista_csv.dat',1,2,[1,2,3,3])