The language of tecnical computing Matlab The language of tecnical computing Marie-Océane Parent : curso Matlab : nov 2009
Topicos Introdução Matrizes e tabelas Funções gráficas Apresentação Características Script / Mfile Funções básicas uteis Variáveis Matrizes e tabelas Criação Manipulação Operações Tabelas elaboradas Funções gráficas Funções gráficas básicas Funções especificas Plotar superfícies e volumes Formatação anotações Objetos gráficos Handle Propriedades Gerenciar objetos gráficos Figura eixos 2 2 2
Introdução Utilizações na engenharia Análise numérica Cálculo matricial Processos graficos Criações de interfaces .... 3 3 3
Conteúdo da pasta de trabalho Apresentação Pasta de trabalho Conteúdo da pasta de trabalho Janela de comando Variáveis Histórico 4 4 4
A MELHOR FERRAMENTA DO MATLAB É A AJUDA !!! Características Matlab é uma linguagem interpretada (≠ compilada) As variáveis elementares são tabelas, matrizes, vetores (≠ ≠ ≠ Mapple) O “coding style” é importante Escrever seu nome e a data Dar nomes claros as variáveis Escrever o máximo de comentários (% ou crtl+R) Respeitar as tabulações A MELHOR FERRAMENTA DO MATLAB É A AJUDA !!! 5 5 5
Encomendas basicas Sintaxe flexível: Bom saber Nome_comando = parâmetro ; Nome_comando = parâmetro parâmetro Bom saber clc : limpa a tela do computador (sem limpar a memória) clear all : limpa a memória do Matlab 6 6 6
Scripts / Mfiles Execução de um conjunto de instruções Coisa.m Um script pode chamar outro script “%” introduz comentários O arquivo do script tem que ser na pasta de trabalho ou no Path para ser executado Matlab tem o seu próprio editor de script Instrução 1; Instrução 2 %comentário ... Instrução n; 7 7 7
As variáveis 8 8 8
As variáveis Nomes das variáveis Workspace Max 18 caracteres Tem que iniciar por uma letra Matlab faz diferença entre Maiúscula e minúscula Evitar ‘ç’ ou ‘ã’ ou outros caracteres “exóticos” Workspace As variáveis criadas são armazenadas no Workspace clear : cancelar as variáveis save : salvar as variáveis load : recuperar variáveis 9 9 9
Constantes definidas Funções de Matlab que definem constantes usuais pi i, j Inf : o infinito do computador (ex : 1/0) NaN : Not a Number (ex : 0/0) eps : precisão relativa ... 10 10 10
Estruturas de controle “Switch” Switch expressão case expressão1 instrução 1; case expressão2 instrução 2; ... otherwise instrução n; end Volta “For” : incremental For ind = inicio : incremento : fim instrução 1; instrução 2; ... instrução n; end Volta “While” : por enquanto While condição lógica instrução 1; instrução 2; ... instrução n; end 11 11 11
Testes e Condições lógicas Testes lógicos : IF Condição lógica instrução 1; instrução 2; elseif Condição lógica instrução 3; else instrução n; end Condições lógicas : Igualdade : == Diferencia : ~= Superioridade : > , >= Inferioridade : < , <= Operadores lógicos : e : & ou : | Xor : xor Not : ~ 12 12 12
Funções básicas uteis ceil (x) : arredonda o numero ‘x’ para o inteiro mais próximo na direção de +inf floor (x) : arredonda o numero ‘x’ para o inteiro mais próximo na direção de –inf round (x) : arredonda o numero ‘x’ para o inteiro mais próximo fix (x) : arredonda o numero ‘x’ para o inteiro mais próximo na direção de 0 rem (x,y) : resto da divisão euclidiana x/y rand : gera números aleatórios entre 0 e 1 13 13
Palavras chaves Palavras definidas por Matlab break, case, catch, continue, else, elseif, end, for, function, global, if, otherwise, persistent, return, switch, try, while Se você usar essas palavras do jeito errado ... 14 14 14
Formatos de variáveis numéricas Formatos mais usados : para mais possibilidades ver Help Format format : (default) 4 dígitos apos do ponto decimal = format short format long : 15 dígitos incluindo o ponto decimal format short e : 5 dígitos mais o expoente (floating) format long e : floating, 15 dígitos OBS : considerando uma precisão double 15 15
Entradas e saídas Tipos de Entradas/ Saídas Textos, Imagens, Som & vídeo Arquivos de calculo Excel ... Recuperar dados usando a interface Usando a função uiimport 16 16 16
Entradas e saídas 17 17 17
Conversar com o usuário Entrada do teclado : Val = input (‘texto1’) string = input (‘texto2’, ‘s’ ) Saída no Command Window disp (variável) 18 18 18
Conversar com o usuário salvar e recuperar arquivos [nome_do_arquivo nome_da_pasta] = uigetfile(‘filtro’) [nome_do_arquivo nome_da_pasta] = uiputfile(‘filtro’) OBS : se o usuário cancela, a função vai dar o valor 0 19 19 19
Instrução save save nome-arquivo variavel1 variavel2 formato save (‘nome_arquivo’, ‘formato’, ‘variavel1’, ‘variavel2’) O formato padrão é o formato binário Matlab (.mat) 20 20 20
Instrução load load nome_arquivo load (‘nome_arquivo’) Nome_var = load (‘nome_arquivo’) Nos arquivos .mat criado com a instrução save, as variáveis ficam com o mesmo nome Nos arquivos –ascii, se não é indicado um nome pela variável, o conteúdo é colocado numa variável com o nome do arquivo 21 21 21
Abrir e fechar um arquivo Abrir : fid = fopen (‘nome_arquivo’, ‘permissão’); fid : variável que identifica o arquivo ; = -1 se teve um problema na abertura Fechar : estatuto : fclose (fid) estatuto = -1 se teve um problema no fechamento do arquivo OBS : Matlab fecha todos os arquivos quanto se fecha ele 22 22 22
Funções de leitura Leitura linha por linha : Texto_linha = fgetl (fid); Texto_linha = fgets (fid); (copia o caráter ‘nova linha’ : coloca mais espaço) Leitura de um conjunto de valores Variáveis = fscanf (fid, ‘format’, num_valores) Leitura de um conjunto de valores binárias Variáveis = fread (fid, num_valores) 23 23 23
Funções de escritura Escritura de valores especificando o formato fprintf (fid,’format’, variavel_para_salvar); Fid : o identificador de arquivo obtido com fopen ‘format’ : %num_caract.num_decimais tipo Ex : %6.2f Escritura de valores binárias fwrite (fid, variavel_para_salvar, precisão); 24 24 24
Excel : reconhecer Reconhecer um arquivo Excel [tipo, nomes_das_folhas] = xlsfinfo (‘nome_do_arquivo’) ‘Microsoft Excel Spreadsheet’ Ou [] se o arquivo não é um documento Excel [ ‘folha1’ ‘folha2’... ‘folha n’] 25 25 25
Excel : Importar Importar data de um arquivo Excel Indica a zona no formato Excel. Exemplo : ‘B5,E5’ Sem especificação Matlab vai selecionar a folha intera Importar data de um arquivo Excel Num = xslread (‘nome_arquivo’, -1) Num = xslread (‘nome_arquivo’, ‘nome_da_folha’, ‘zona’) Num vai ser uma tabela de números Do mesmo tamanho que a zona considerada Os valores não numéricos são NaN As linhas o colunas de textos são ignoradas Permite de abrir o arquivo no Excel e o usuário seleciona a zona a importar 26 26 26
Excel : Escrever Escrever dados num documento Excel Se a folha não existe, é criada = 1 : sucesso = 2 : fracasso [status, mensagem] = xlswrite (‘nome_arquivo’, M, ‘nome_folha’, ‘zona_escritura’) Informações sobre os problemas eventuais Tabela de dados para escrever Tamanho Maximo : 65536 x 256 27 27 27
Criação Manipulação Operações matriciais Operações de tabela Matrizes e tabelas Criação Manipulação Operações matriciais Operações de tabela
Criação de matrizes Criar uma matriz Explicitamente : A matriz é delimitada por [ e ] Os elementos da linha são separados por um espaço O fim da linha é indicada por ‘ ; ’ O símbolo ‘ : ‘ permite de criar um vetor com elementos espaçado regularmente : Vetor = inicio : passo : fim Ex : v = 1 : 1 : 4 ; ↔ v = [ 1 2 3 4 ]; Usando as encomendas Matlab lindspace : cria um vetor de n elementos com um inicio e um fim zeros : cria uma matriz de zeros ones : cria uma matriz de uns rand : matriz aleatória uniforme randn : matriz aleatória normal eye : matriz identidade pascal : triângulo de Pascal magic : quadrado mágico vander : Vander monde ..... Exemplos : 29 29 29
Criação de matrizes Usando a instrução load OBS : todas as linhas do arquivo tem que ter o mesmo número de colunas ! 30 30 30
Criação de matrizes exemplos 31 31 31
Manipulação de matrizes Obter o valor de um elemento : Var=nome_matriz(ind1,ind2); Atribuir um valor a um elemento nome_matriz(ind1,ind2)=valor; 32 32 32
Manipulação de matrizes Concatenação NB : As dimensões das matrizes tem que ser coerentes 33 33 33
Manipulação de matrizes Extração 34 34 34
Manipulação de matrizes Suprimir linhas e colunas O símbolo [ ] significa matriz vazia 35 35 35
Manipulação de matrizes 36 36 36
Operações Matriciais Significado Símbolo Exemplo Transposta Adição Subtração Multiplicação com um escalar Multiplicação X solução de A.X=B X solução de X.A=B Potência Determinante Traça Valores Próprias Inversa Fatoração de Cholesky Fatoração L.U ... ‘ + - * \ / ^ det trace eig inv chol lu B=A’ C=A+B C=A-B D=3*A D=A*B X=A\B X=B/A B=A^3 dd=det(A) t=trace(A) vp= eig(A) (o resultado é um vetor) B=inv(A) (consultar a ajuda) 37 37 37
Operações vetorias dot (a,b) : produto escalar dos vetores a e b cross (a,b) : produto vetorial norm (a) : norma(2) do vetor a 38 38
Operações de tabelas Significado Símbolo Exemplo Multiplicações Operações que acontecem elementos por elementos entre tabelas de mesmas dimensões (n x m). Permite de evitar de construir voltas iterativas O resultado vai ser uma tabela (n x m) Os operadores são caracterizados por o símbolo : “.” Significado Símbolo Exemplo Multiplicações Divisão Potência .* ./ .\ .^ z=x.*y ou z(i,j)=x(i,j)*y(i,j) z=x./y ou z(i,j)=x(i,j)/y(i,j) z=x.\y ou z(i,j)=y(i,j)/x(i,j) z=x.^y ou z(i,j)=x(i,j)^y(i,j) 39 39 39
Operações de tabelas Operadores de relação : >, >= ,< ,<= ,== ,~= (O resultado é uma tabela de 0 e 1) Operadores lógicos : & ,| ,~ Raiz : sqrt, ^ Procura de valores : find Operadores trigonométricos : sin, cos, tan, asin, acos, atan, atan2... unidade em radianos Operadores hiperbólicos : sinh, cosh, tanh, acosh, atanh... Números complexos : abs, sqrt, angle, real, imag, conj... Operadores logaritmicos : log, exp, log10 n! factorial (n) ... 40 40 40
Alguns exemplos Matriz aleatória 3x3 Traça da matriz B Produto matricial Produto de tabelas Matriz aleatória 3x3 Traça da matriz B Determinante da matriz B Inversa da matriz B 41 41 41
Strings Matrizes ocas Tabelas de células Estruturas Tabelas “elaboradas” Strings Matrizes ocas Tabelas de células Estruturas
String Sintaxe : nome_variavel= ‘texto...’; Funções elementares Concatenação : [ ] txt=[ txt1, txt2, ‘marcel’]; Teste : isstr 1 se é um string 0 se é um numero Vazios deblank suprime os espaços d’um string Comprimento size numero de caracteres do string Código ASCII abs código ASCII de cada caractere char caractere associado a um código ASCII Conversão int2str intero em caractere num2str real em caractere str2num caracteres em real eval texto em instrução Matlab lower/upper minúscula/maiúscula Comparação strcmp 43 43 43
Tabelas de String Duas sintaxes possíveis Tabela “clássica” : S=strvcat(string1,string2,...) Brancos são juntados para que cada linha tenha o mesmo tamanho Tabela de células : S={ string1, string2...; string3,string4...}; 44 44 44
Matrizes Ocas Definição Criação Matrizes que tem muitos ‘0’ A ferramenta de definição de matrizes ocas permite de armazenar só os valores não-nulos e sua localização na matriz. Permite de economizar muito espaço de memória Criação Não é nunca automático A função sparse(M) permite de converter uma matriz normal em uma matriz oca A função full(N) permite de voltar a uma matriz cheia 45 45 45
Matrizes Ocas Criação direita S=sparse(ind_lin, ind_col, valores, num_lin,num_col) Vetores de mesma dimensão escalares 46 46 46
Matrizes Ocas Informações sobre os elementos não-nulos nnz : número de elementos não-nulos nonzeros : vetor dos elementos não-nulos find : indica os índices i e j dos elementos não-nulos Visualização gráfica spy : visualização 2D, cada ponto representa um elemento não-nulo 47 47 47
Matrizes Ocas Operações A maioria das operações Matlab funcionam com as matrizes ocas Existem algumas funções específicas : issparse : indica se uma matriz é o não é oca spalloc : alocação do espaço speye : matriz identidade oca sprand : matriz aleatória oca ... 48 48 48
Tabela de células : Cell Arrays O que é ? Armazenamento “organizado” de dados de tipos e dimensão diferentes 49 49 49
Tabela de células Indexação Indexação da célula Indexação do conteúdo OBS : essas duas sintaxes são equivalentes Indexação Indexação da célula C(ind1,ind2)={valor}; Indexação do conteúdo C{ind1,ind2}=(valor); 50 50 50
Tabela de células Acessar a um elemento Indexação da célula V1=C1(1,1); Indexação do conteúdo V1=C1{1,1}; OBS : essas duas sintaxes NAO são equivalentes 51 51 51
Tabela de células Funções interessantes cell : criação de uma tabela de células de matrizes vazias celldisp : visualização do conteúdo das células cellplot : visualização gráfica da tabela cellfun : aplica uma função a todos os elementos iscell : valor =1 se é uma tabela de células num2cell : conversão de uma tabela de números em uma tabela de células 52 52
Estruturas Definição MATLAB : Structures are multidimensional MATLAB arrays with elements accessed by textual field designators. Os campos podem ser de diferentes tipos Exemplo : Ensaios de Caixa de Marchas Caixa Data Relação Torque Velocidade 53 53 53
Estruturas OBS : Todos os componentes de uma estrutura tem os mesmos campos. Os campos que não são definidos tem o valor []. 54 54
Funções Gráficas Funções gráficas básicas Sintaxe Funções especializadas Encomendas uteis Objetos gráficos
Funções gráficas básicas plot Plota em 2D errorbar Plota em 2D com barra de erros polar Representação polar ptotyy Cria gráfico com eixo ‘y’ dos dois lados loglog Cria grafico com escada logaritmica semilogx semilogy Cria gráfico com um dos eixos na escada logarítmica plot3 Plota uma linha em 3D 56 56
Sintaxe : função plot Nome_handle = plot (X,Y,’lineSpec’) X e Y podem ser vetores do mesmo tamanho uma curva 2D – 1 “handle” X e Y podem ser matrizes do mesmo tamanho uma curva 2D por coluna – 1 “handle” por curva X pode ser um vetor e Y uma matriz uma curva 2D por coluna de Y de coordenada X : 1 “handle” por curva lineSpec : string que permite de definir o estilo da curva Cor do traço Espessura Tipo de traço... 57 57
Estilo da curva ‘lineSpec’ Ex : plot (X,Y,’--+r’) 58 58
Exemplo : plot t=0:pi/100:2*pi; x=sin(t); y1=sin(t+0.25); plot (x,y1,’r-’,’linewidth’,2) hold on plot(x,y2,’b—’,’linewidth’,2) title(‘blulublu’) xlabel(‘x=sin(t)’) ylabel(‘y=sin(t+a)’) grid on t : é um vetor cujas componentes variam de 0 até 2*pi com um encremento de pi/100 x, y1 e y2 são vetores do mesmo tamanho que t Plotar em vermelho com traço continuo e espessura 2, a curva y1=f(x) Plotar em azul com linha tracejada e espessura 2 a curva y2=f(x) Titulo do gráfico Legenda dos eixos Exibir as linhas de grade 59 59
Exemplo plot 60 60
Exemplo plot3 Sintaxe : nome_handle=plot3(X,Y,Z,’linespec’) desenhar uma hélice t=0:pi/50:10*pi; plot3(sin(t),cos(t),t,'linewidth',2) grid on 61
Funções específica Ver na ajuda : 62
Plotar superfície, volumes... Aplicação : visualizar a função seno cardinal : sen(x)/x x=-8:0.43:8; y=x; [X,Y]= meshgrid (x,y); R= sqrt (X.^2+Y.^2); Z=sin (R)./R; surf (X,Y,Z) 63
Plotar superfície, volumes subplot (2,2,1); mesh (X,Y,Z) title ('Visualizar com mesh') subplot (2,2,2) meshc (X,Y,Z) title ('Visualizar com meshc') subplot (2,2,3) surf (X,Y,Z) title ('Visualizar com surf') 64
Formatação, anotações hold on / hold off Superposar curvas title (‘string’) insere um titulo xlabel (‘string’) ylabel (‘string’) insere descrição dos eixos grid on / grid off insere ou cancele linhas de grade no gráfico box Quadra mento do gráfico subplot Criar diferentes gráficos na mesma figura legend Criar uma legenda text, gtext Colocar texto axes Definir os limites dos eixos 65 65
Salvar uma figura print : manda pela impressora saveas : salvar no formato imagem saveas (handle,’nome’, ‘formato’) saveas (handle,’nome.ext’) OBS : E bom testar os formatos para saber qual é o mais adequado 66
Objetos gráficos 67 67
Características de objetos gráficos Ligação dinâmica : “handle” Numero real Atribuído automaticamente na criação do objeto gráfico Não pode ser modificado Propriedades : tipo de objeto, pais, cor, visibilidade... Dependem do tipo de objeto Podem ser modificadas Tem valores padrões (default) Podem ser recuperadas, memorizadas, transferidas, modificadas... 68
Recuperar o handle Na criação do objeto gráfico Usando funções Matlab hfig1 = figure; hobj1 = função_de_criação_do_objeto; Usando funções Matlab hobj = gco (get current object) gca (get current axis) gcf (get current figure) Função handlem (ver a ajuda) Função findobj : permite de recuperar o handle do ‘current’ objeto e de todos os descendente dele. 69
Lista das propriedades Pode ser obtida com a encomenda : get (handle) Pode ser obtida dum jeito interativo 70
Gerenciar os objetos gráficos Acessar, modificar o valor de uma propriedade Val= get (handle, ‘nome_propriedade’); set (handle, ‘nome_propriedade’,valor_novo); Deletar um objeto gráfico Val = delete ( handle_do_objeto_a_deletar); t=0:pi/50:10*pi; hfigura=plot3(sin(t),cos(t),t); grid on hlinha=findobj(gca,'Type','line'); set(hfigura,'linewidth',4) set(hlinha,'color','r') 71
Figura Criação Com o encomendo figure hfigura= figure (‘propriedades’); Usando uma função gráfica do Matlab : todas as funções de plotagem podem gerar uma figura : plot, plot3, surf... hfig1=figure('units', 'normal','position',[0.01 0.05 0.8 0.8]); hfig2=figure('units','normal','position',[0.012 0.08 0.5 0.5],'color',[1 1 0]);
Posicionar a janela figure ( ‘unit’,’normal’,’position’,[Xbaixo Ybaixo CompX CompY] ) Tela do computador Figura Ybaixo Xbaixo CompY CompX Pixel (padrão) Inches Centimeters Points Normal
Propriedades uteis visible on / off Gerencia a visibilidade do objeto Color Cor do fundo da figura Name Nome da janela Numbertitle on / off Exibição ou não do numero no titulo da janela Pointer Aspecto do cursor close (handle_da_figura_para_fechar ) : fechar uma figura clf : cancela o conteúdo de uma figura
Eixos Criar um novo sistema de eixos handle= axes ; Posicionar o sistema de eixos set (handle,’units’,’normal’,’position’,[Xbaixo Ybaixo CompX CompY]) OBS : não fazer confusão entre a instrução axes e axis Janela da figura Pixel (padrão) Inches Centimeters Points Normal CompX Xbaixo Sistema de Eixos CompY Ybaixo
Propriedades dos eixos xlim, ylim, zlim Definir os limites dos eixos fontname, fontsize Características de policia xscale, yscale, zscale ( ‘lin’ / ‘log’ ) Tipo de escala xtick, ystick, zstick Posição das graduações cla : cancela o conteúdo do sistema de eixos
Criar uma interface Escrevendo o programa Figura Eixos Imagens Edit text, static text Buttons Push buttons Radio buttons Check box Callbacks... h_objeto_grafico= uicontrol (h_figura, ’units’,’normal’, ’position’,[...], ’style’,’text’, ’text’,’nome_objeto’, ’enable’,’on /off’, ’value’,[.], ’backgroundcolor’,[...], ’callback’,’função_X(ind)’);
Criar uma interface Usando GUIDE
Referências Curso do Professor Aurelien Saulot : INSA de Lyon, Bases Informatiques pour l’Ingénieur, (B2I) 3ème Année Génie Mécanique et Dévelopement Ajuda e demos de Matlab 7.1 Algumas imagens de projetos realizados com Cécile Lasfargues (diferencias finitas) et Benoît Trollé (tribologia) (slide 2)