370 likes | 471 Views
INTRODUÇÃO AO USO DO PROGRAMA COMPUTACIONAL MATLAB. UNIVERSIDADE FEDERAL RURAL DO RIO DE JANEIRO IT – Departamento de Engenharia LABORATÓRIO DE MECANIZAÇÃO AGRÍCOLA. Carlos Alberto Alves Varella, Prof. UFRRJ-IT/DE. varella@ufrrj.br
E N D
INTRODUÇÃO AO USO DO PROGRAMA COMPUTACIONAL MATLAB UNIVERSIDADE FEDERAL RURAL DO RIO DE JANEIRO IT – Departamento de Engenharia LABORATÓRIO DE MECANIZAÇÃO AGRÍCOLA Carlos Alberto Alves Varella, Prof. UFRRJ-IT/DE. varella@ufrrj.br Joseph Kalil Khoury Junior, Prof. UFRRJ-IT/DE. kalil@ufrrj.br Keilla Boehler, Aluna do Curso de Engenharia Agrícola, UFRRJ. keillambidao@ig.com.br Ambiente de computação para desenvolvimento de sistemas sofisticados
Conteúdo • Introdução • Principais Recursos do Programa • Janela Principal do Programa • Principais Sub-janelas do Programa • Manipulação de Matrizes • Matrizes e gráficos para análise de dados • Janelas e Ferramentas • Comandos de alto nível • Operações com Vetores • Funções Matemáticas • Matrizes • Comando for-switch-case-otherwise-while • Plotagem de gráficos • Representações em coordenadas polares • Arquivos, extensões e rotinas • Criação de uma nova função • Gráficos tridimensionais • Mapa de Cores
Introdução O programa computacional MATLAB é um ambiente de computação técnico-científica para o desenvolvimento de sistemas sofisticados ( MATSUMOTO, 2002); É extensivamente usado para exploração, análise e resolução de problemas em diversas áreas do conhecimento; Apresenta diversos pacotes de ferramentas ‘toolbox’ que são um conjunto de algoritmos especialmente desenvolvidos para aplicações específicas.
Principais Recursos do Programa • Linguagem de alto-nível para computação técnica • Ambiente de desenvolvimento e administração de código, arquivos, e dados • Ferramentas interativas para exploração, desígnio e resolução de problemas • Funções matemáticas para álgebra linear, estatísticas, análise de Fourier, filtragem, otimização, e integração numérica • Funções para visualizar dados de gráficos 2-D e 3-D • Ferramentas para construção de interfaces com usuário • Funções que integram MATLAB funcionam como base de algoritmos com aplicações externas e idiomas, como C, C++, Fortran, Java, COM, e Microsoft Excel,
Principais Sub-janelas do Programa Workspace Janela de comando Comand Window
X Y Caminhonete Caminhão Revendedor A 15400 18200 46200 Revendedor B 16200 17900 47500 Revendedor C 15150 19000 48000 Manipulação de Matrizes • Comando XLSREAD(‘*.xls) carrega o arquivo que contém os valores; • Quantidades de cada item determinadas em uma matriz; • Multiplicando as matrizes pode-se comparar os preços total ofertado no total por cada revendedor. >> precos= XLSREAD('exemplo novo.xls'); >> precos precos = 15400 18200 46200 16200 17900 47500 15150 19000 48000 >> escolha=precos*quantidade escolha = 156800 161500 160450 >> quantidade=[3;1;2] quantidade = 3 1 2
Matrizes e gráficos para análise de dados >> grafico=[precos,escolha] grafico = 15400 18200 46200 156800 16200 17900 47500 161500 15150 19000 48000 160450 >> revendedor=[1 2 3]; >> bar(grafico) >> plot(revendedor,grafico(:,1))
Gráficos para análise de dados >> plot(revendedor,grafico(:,2)) >> plot(revendedor,grafico(:,3)) >> plot(revendedor,grafico(:,4))
Janelas e Ferramentas • Escolha de diretório; • Utilização de ferramenta de busca para opção de comando; • Leitura de imagem em formato .JPG • Salvar a variável em arquivo .m que consta em workspace . • Amostragem para análise da composição da imagem. • Carregando variável salva para ser usada em outro trabalho
Comandos de alto nível • O comando figure é um suporte sempre necessário quando deseja-se amostrar imagens. É designado através da interface programa-usuário • As linhas de programação ficam gravadas em arquivos M-file ou arquivos de extensão .m
Operações com Vetores Manipulação >> h1=h+2 >> v=t+h >> t1=t*5 >> b=t*h‘ >> b1=t.*h >> b2=t/h Criação >>t=[0 2 4 6 8 10 12 14 16 18 20] Ou >>t1= 0:2:20 >> h=1:3:32 >> who Your variables are: h t >> whos Name Size Bytes Class h 1x11 88 double array t 1x11 88 double array Grand total is 22 elements using 176 bytes
Funções Matemáticas • Para facilmente escrever linhas de expressão matemática, Matlab disponibiliza bloco de códigos que realizam tarefas específicas. • Contém funções padrão como sin, cos, tan, sec, exp, log, sqrt,sum, mean. Constantes geralmente usadas como pi, e i ou j para a raiz quadrada de -1, também está incorporado em Matlab. • Encontra-se todas as funções matemáticas elementares listadas através do comando: >> help elfun
Implementação de Funções >> x=4; y=3; >> t=(2*x^2-5*y)/(sqrt(2*y^(3-x)+17)) t = 4.0446 >> w=(5*x+3-x^3-y^3)/(2*y-x-4*y^2) w = 2 >> q=(sin(w)^3-t^4/10+tan(w))*(-sqrt(t*3+1))/12*w q = 17.0289
Matrizes >> a = [1 2 3;4 5 6;7 8 9] >> a1 = [1 2 3 4 5 6 7 8 9] >> a2 = [1 2 3,4 5 6,7 8 9] >> b=[1 2 2;3 2 4; 5 2 1]; >> d=[b,a] >> b=rand(6) >> var(b) >> cov(b) Sendo a matriz de variância diagonal da matriz de covância O cálculo de transpostas, inversas, determinantes,diagonais, covariâncias resume-se a comandos como: >> inv(x) • Livro de algebra linear exercício • help matfun
Funções para Matrizes >> ones(3) matriz de uns >> zeros(5) matriz de zeros >> rand(3) matriz com elementos aleatórios distribuídos uniformemente >> randn(4) matriz com elementos aleatórios distribuídos normalmente >> eye(3) matriz identidade >> ones(3,1,2) matriz de uns com especificação da dimensão >> a=ones(2,5); b=zeros(2,5); c=ones(1,5)*3;vertcat(a,b,c) comando que concatena matrizes verticalmente >> repmat(a,2,3) >> m = size(rand(2,3,4),2) em que o ultimo algarismo responde sobre a dimensão dois, a das colunas. Poderia ser 3, a das linhas. E 4, a das bandas. >>d=peaks(25);
Programação simples • Sistematização de terreno pelo ‘Método do Plano Único’ c =input('cotas das amostras ordenadas na sequencia da malha:') %[10.0000,10.2800,10.2000,10.3000,10.3100;10.3000,10.3200,10.2800,10.3100,1 %0.4000;10.4800,10.5000,10.5500,10.4800,10.5500;10.5600,10.7000,10.8000,10. %7500,10.7800]; a=size(c,1);b=size(c,2); N=a*b; Hc=(sum(sum(c,1)))/N; dif=c-Hc; inda=find(dif < 0);indc=find(dif > 0); dist=input('distancia entre pontos da malha:'); area=dist^2; volcorte= sum(dif(indc))*area; volaterro=sum(dif(inda))*area;
Comandos for-if-else-end-switch-case-otherwise-while • A forma básica do comando for é: • for índice = começa:incremento:para • declarações • end >> for a=1:10 a<=3; C(a)=a^2; a=3:7; C(a)=a+5; a=7:10; C(a)=a; end >> stem(C) >> for m=1:10 x(m)=m^2; end; >> x(3) ans = 9
Estruturas if-else-end • Matlab tem quatro tipos de afirmações são if, elseif, else,end • Elas fazem o controle de fluxo baseadas no teste lógico. • Em sua forma básica: • If teste • declarações • End function retorno=posneg(ent) if all(ent>0) retorno=1; elseif all (ent<0) retorno=-1; else retorno=0; end • O teste é uma expressão em que há 1(verdadeiro) ou 0(falso) é executado entre o if e end e retorna se o teste der verdadeiro, quando falso são ignoradas as declarações. • Testes adicionais podem ser feitos usando elseif e else.
Estrutura switch, case, otherwise • A forma básica de parâmetros do switch e´: • switch teste • case resultado1 • declaração • case resultado2 • declaração • ... • otherwise • declaração • end M-file switchx.m switch x case 1 disp('x is 1'); case {2,3,4} disp('x is 2, 3 or 4'); case 5 disp('x is 5'); otherwise disp('x is not 1, 2, 3, 4 or 5'); end >> x=5; Pressione o botão run: >> x is 5 • A expressão em switch case só pode ser um escalar ou uma string.
While n = 1; while sum(1:n)<=1000 n = n+1; end • while teste • declaração • end • As declarações são executadas repetidamente enquanto o valor de teste for igual a 1, por exemplo, achar o primeiro inteiro n para qual 1+2+· · ·+n é maior que 1000:
Área de um Polígono com While • mat=input('matriz de coordenadas x e y dos pontos da poligonal:') • matr=vertcat(mat,mat(1,:)); • x=matr(:,1);y=matr(:,2); • a=size(x,1); • n=1; • soma=0; • while n<a; • mult=x(n,1)*y(n+1,1); • soma=soma+mult; • n=n+1; • end • m=1; • soma2=0; • while m<a; • mult2=x(m+1,1)*y(m,1); • soma2=soma2+mult2; • m=m+1; • end • area=abs((soma-soma2)/2)
Plotagem de Gráficos • subplot trabalha com multiplicidade de gráficos • renda= [3.2 4.1 5.0 5.6]; • gastos= [2.5 4.0 3.35 4.9]; • subplot(2,1,1); plot(renda) • subplot(2,1,2); plot(gastos) O comando axis ajusta a escala do gráfico às coordenadas dos pontos plotados. Sintaxe: axis([xmin xmax ymin ymax]) >> x1=-1;y1=-1;x2=1;y2=-1;x3=-1;y3=1;x4=1;y4=1; >> plot(x1,y1,'o',x2,y2,'o',x3,y3,'o',x4,y4,'o') >> axis([-2 2 -2 2]) >> axis square %forma quadrada >> axis normal ou >> x=[-1 1 -1 1] ; y=[-1; -1; 1; 1] ; plot(x,y,'.r');axis([-2 2 -2 2])
Comando subplot subplot 221 plot(1:10) subplot 222 plot(0,’*’) subplot 212 plot([1 0 1 0]) >> t = 0:.1:2*pi; subplot(2,2,1) plot(cos(t),sin(t)) subplot(2,2,2) plot(cos(t),sin(2*t)) subplot(2,2,3) plot(cos(t),sin(3*t)) subplot(2,2,4) plot(cos(t),sin(4*t)) • Sendo o primeiro índice o número de eixos na vertical, o segundo número de eixos na horizontal e o último o número de ordem ou posição.
Propriedades de Gráficos • Para colocar rótulos em gráficos pode-se usar a função xlabel, ylabel, and title >> xlabel(‘eixo x'); ylabel(‘eixo y'); title(‘pontos no plano') • Inserir texto em ponto de sua escolha no gráfico >>gtext('P1');gtext('P2');gtext('P3');gtext('P4') • Em help plot visualiza-se as especificações das características do gráfico >> t = 0:.1:2*pi; plot(t,sin(t),t,sin(1.05*t)) >> gtext('frequency = 1');gtext('frequency = 1.05');axis([0 max(t) -1 1]) • Pode-se especificar o estilo de linha, o símbolo que marca o ponto e cor do gráfico ainda pelo prompt. • >> x=[4 5 6; 1 2 3]; y=(x.^2) • >> plot(x,y,'-.or') • >> plot(x,y,'-hk')
Propriedades de Gráficos >> t = 0:.1:2*pi; plot(t,sin(t),t,sin(1.05*t)) >> gtext('frequency = 1');gtext('frequency = 1.05');axis([0 max(t) -1 1]) >> dt = 2*pi/10; t = dt:dt:10*dt; x = cos(t); y = sin(t); plot(x,y) axis equal off for i = 1:10 text(x(i),y(i),int2str(i)) end
Comando plot3 • Matlab apresenta um gráfico tridimensional com plot3: • >> x1=3; y1=4; z1=5; • >> plot3(x1,y1,z1,'*') >> th=[0:.01:2]*2*pi; x=cos(th); y=sin(th); z=th; plot3(x,y,z)
Representações em coordenadas polares >> th=0:2*pi/100:2*pi; rho=3*th; polar(th,rho)
Arquivos, extensões e rotinas • As rotinas para automação de atividades também são gravados em arquivos de extensão .m e carregados sempre que necessário; • File>New>M-File Copiar as linhas de programação com sintaxe correta e salvar; • File>Open>(escolha) Desde que o arquivo esteja no diretório corrente; • Botão para compilação ou prompt digitando o nome do arquivo. • As variáveis de trabalho podem ser armazenadas em arquivos de extensão .mat através do menu File> Save Workspace As... E carregadas da mesma maneira que um M_File. clear, clf >>x1=1;y1=.5;x2=2;y2=1.5;x3=3;y3=2; >>plot(x1,y1,'o',x2,y2,'+',x3,y3,'*') >>axis([0 4 0 4]) >>xlabel('xaxis') >>ylabel('yaxis') >>title('3points in a plane')
Criação de uma nova função • É necessário criar um arquivo .m denominado da mesma forma que a função; • Em sua primeira linha escreve-se o comando function e segue a descrição dos parâmetros da nova função. • Para a amostragem geométrica da função em seu domínio usa-se o comando fplot delimitando os intervalos >> fplot ('andre',[-2,7])
Gráficos tridimensionais >> [x,y] = meshgrid(-10:10); z = sqrt(x.^2 + y.^2); >> mesh(x,y,z)
Tipos de representações z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... - 1/3*exp(-(x+1).^2 - y.^2); [x,y,z] = peaks; colormap(gray) mesh(x,y,z) plot(z)
Outros tipos de representações >> surfl(x,y,z) >> shading flat >> surf(x,y,z) >> shading flat >> imagesc(z) >> axis xy >> contour(x,y,z)
Outros tipos de representações >> surfc(x,y,z) >> contourf(x,y,z)
Red Green Blue Colour 0 0 0 Black 1 1 1 White 1 0 0 Red 0 1 0 Green 0 0 1 Blue 1 1 0 Yellow 1 0 1 Magenta 0 1 1 Cyan .5 .5 .5 Gray .5 0 0 Dark red 1 .62 .4 Dark orange .49 1 .83 Aquamarine .95 .9 .8 Parchment Mapa de Cores • Pode-se usar ‘colormap’ predefinido ou criar seu próprio colormap; • Matlab usa matrizes para aplicar cores em mapas, imagens e superfícies. • Colormap predefinido • Colormap especificado hsv hot gray bone copper pink white flag lines colorcube jet prism cool autumn spring winter summer >> colormap (‘hot’) >> colormap ([.5 .5 .5]) >> gray(8)
Data Formats Command Returns MAT - MATLAB workspace LOAD Variables in file CSV - Comma separated numbers CSVREAD Double array TXT – Formatted data in a text file TEXTREAD Double array DAT - Formatted text IMPORTDATA Double array DLM - Delimited text DLMREAD Double array TAB - Tab separated text DLMREAD Double array Spreadsheet Formats Command Returns XLS - Excel worksheet XLSREAD Double array and cell array WK1 - Lotus 123 worksheet WK1READ Double array and cell array Scientific Data Formats Command Returns CDF - Common Data Format CDFREAD Cell array of CDF records FITS - Flexible Image Transport System FITSREAD Primary or extension table data HDF - Hierarchical Data Format HDFREAD HDF or HDF-EOS data set Formatos suportados para arquivos de dados
Image Formats Command Returns TIFF – Tagged image format IMREAD Truecolor, grayscale or indexed image(s) PNG – Portable network graphics IMREAD Truecolor, grayscale or indexed image HDF – Hierarchial data format IMREAD Truecolor or indexed image(s) BMP – Windows bitmap IMREAD Truecolor or indexed image Audio Formats Command Returns AU – Next/Sun Sound AUREAD Sound data and sample rate SND – Next/Sun Sound AUREAD Sound data and sample rate WAV – Microsoft Wave Sound WAVREAD Sound data and sample rate Movie Formats Command Returns AVI - Movie AVIREAD MATLAB movie Formatos suportados para arquivos de imagem, áudio e filme