Matlab - Conceitos Básicos

1.430 visualizações

Publicada em

2 comentários
2 gostaram
Estatísticas
Notas
Sem downloads
Visualizações
Visualizações totais
1.430
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
73
Comentários
2
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Matlab - Conceitos Básicos

  1. 1. Conceitos BásicosRodolfo Maduro Almeida
  2. 2. O que é o MATLAB?MATrix LABoratory é um software pararesolução de problemas numéricos evisualização computacional.MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  3. 3. O que é o MATLAB?• Desenvolvido pela Mathworks Inc., sede emNatick, Massachusetts, EUA.http://www.mathworks.com/MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  4. 4. Características• Software multiplataforma: Distribuições paraWindows, Linux/Unix e Mac.MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  5. 5. Características• Possui ambiente interativo e uma linguagemsimples, de alto nível cujos recursos permitemganho no tempo de implementação.MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  6. 6. Vantagens• Seu ambiente de desenvolvimento permiteinteração do MATLAB com outras linguagenscomo C/C++, Java, Fortran. Isto permite odesenvolvimento de toolboxes: extensões desua linguagem para solução de problemasespecíficos.MATLAB: Conceitos Básicos - Rodolfo Maduro AlmeidaToolbox deOtimizaçãoToolbox deRedes NeuraisToolbox de Proc. de Imagens
  7. 7. Desvantagens• Não aconselhável para solução de problemascomplexos que exijam elevado esforçocomputacional: por ser baseado em umalinguagem de programação interpretada.• Você tem que pagar para usá-lo (05/05/09):Versão Estudante: U$ 99.00Cada toolbox: U$ 59.00
  8. 8. Alternativas ao MATLAB• SciLab: software livre que possui os mesmascaracterísticas do MATLAB anteriormentemencionadas. Nos últimos anos vem ganhando espaçono meio acadêmico. Possui distribuições para Windowse Linux.MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  9. 9. Alternativas ao MATLAB
  10. 10. Inicializando o MATLABIniciar > Executar > “matlab” <enter>Iniciar > Programas > MATLAB > MATLABPelo prompt de comando do MS-DOS:> “matlab” <enter>MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  11. 11. O Ambiente do MATLABMATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  12. 12. O Ambiente do MATLABMATLAB: Conceitos Básicos - Rodolfo Maduro AlmeidaDiretório de trabalho
  13. 13. O Ambiente do MATLABMATLAB: Conceitos Básicos - Rodolfo Maduro AlmeidaCurrent directory: Exibe oconteúdo do diretório de trabalho
  14. 14. O Ambiente do MATLABMATLAB: Conceitos Básicos - Rodolfo Maduro AlmeidaJanela de comandos
  15. 15. O Ambiente do MATLABMATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  16. 16. O Ambiente do MATLABMATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  17. 17. O Ambiente do MATLABMATLAB: Conceitos Básicos - Rodolfo Maduro AlmeidaWorkspace: Exibeinformações acerca dasvariáveis carregadas namemória
  18. 18. O Ambiente do MATLABMATLAB: Conceitos Básicos - Rodolfo Maduro AlmeidaCommand history:Exibe informaçõesacerca do histórico decomandos
  19. 19. O Ambiente MATLABOs comandos do MATLAB são definidos emuma linguagem própria.Suas instruções podem ser interpretadas:• via janela de comandos• via arquivos com um conjunto de instruções (script)editado com o MATLAB Editor e salvo em um arquivo deextensão “.m”.O bom uso do MATLAB exige um melhordomínio da sintaxe de sua linguagem.MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  20. 20. Declaração de variáveisMATLAB: Conceitos Básicos - Rodolfo Maduro Almeida• Variável: Elemento de um programa que édeclarado e armazenado na memória, cujovalor pode ser modificado ao longo de suaexecução.• Declaração de uma variável no MATLAB: usa-se o operador atribuição “=”.>> variavel = valor;• Tipos de valores:Os tipos podem ser numérico (real ou inteiro),complexo ou caractere.
  21. 21. Declaração de variáveisMATLAB: Conceitos Básicos - Rodolfo Maduro AlmeidaRegras para nomes Comentário e exemplosCase sensitive Custo, CustO, CuStO e CUSTO são variáveisdiferentes no MATLABDevem conter nomáximo 31 caracteresCustoTotalAnoAnterior = 10CustoTotalEstimadoProximoAno = 4Não deve começar comnúmero e nem conterpontuações ou espaçosValor_Estimado = 3Valor1 = 9.2X123 = 2.5
  22. 22. Declaração de variáveisRepresentação dasvariáveis: matrizesEscalar StringMatrizesnuméricasMATLAB: Conceitos Básicos - Rodolfo Maduro AlmeidaX = 3Matriz(1x1)BALTAMnome = „MATLAB‟Vetor linha0110B101B101B
  23. 23. Declaração de variáveis• Declarando matrizes no MATLAB:1. Os elementos devem ser declarados entre [ ]2. Os elementos de uma mesma linha numa matrizsão separados por espaço(s) ou vírgula3. ponto-e-vírgula(;) indica o final de uma linha deuma matriz ou final de uma expressãoMATLAB: Conceitos Básicos - Rodolfo Maduro Almeida452906841A A = [1 4 8; 6 0 9; 2 4 5]
  24. 24. Operadores aritméticosmatriciaisMATLAB: Conceitos Básicos - Rodolfo Maduro AlmeidaOperação SímboloAdição +Subtração -Multiplicação *Divisão /Potenciação ^Matriz transposta „
  25. 25. Operadores aritméticos>> a = 4a = 4>> b = 3b = 3>> c = a + bc = 7>> c1 = a – bc1 = 1>> c2 = b / ac2 = 0.7500>> c3 = a^2 + b^2c3 = 25MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  26. 26. Operadores aritméticos>> A = [1 2; 3 4]A =1 23 4>> B = [5 6; 7 8]B =5 67 8>> C = A + BC =6 810 12>> C1 = A – BC1 =-4 -4-4 -4>> C2 = A^(-1) %=(inv(A))C2 =-2.0000 1.00001.5000 -0.5000>> C3 = A/B %=(A*inv(B))C3 =3.0000 -2.00002.0000 -1.0000>> C4 = A^2 + B^2C4 =74 88106 128>> C5 = A’C5 =1 32 4MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  27. 27. Operadores aritméticosponto-a-pontoMATLAB: Conceitos Básicos - Rodolfo Maduro AlmeidaOperação SímboloMultiplicação .*Divisão ./Potenciação .^Operador ponto-a-ponto: Executa a operações entre (ou sobre) oselementos da matriz. Quando envolver duas matrizes, as suas dimensõesdevem ser as mesmas.
  28. 28. Operadores aritméticos>> A = [1 2; 3 4]A =1 23 4>> B = [5 6; 7 8]B =5 67 8>> C1 = A * BC =19 2243 50>> C1 = A .* BC2 =5 1221 32>> D1 = A/BC3 =3.0000 -2.00002.0000 -1.0000>> D2 = A./BD1 =0.2000 0.33330.4286 0.5000>> E1 = A^3E1 =37 5481 118>> E2 = A.^3E2 =1 827 64MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  29. 29. Operador dois-pontos (:)É um dos operadores mais úteis do MATLAB.Cria vetores e serve para manipular índices dematrizes.Criando vetores:>> vetor = valor_inicial:incremento:valor_final>> vetor = valor_inicial:valor_final (incremento=1)MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  30. 30. Operador dois-pontos (:)MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida>> C = 1:2:11C =1 3 5 7 9 11>> E = [1:1:3;4:1:6;7:1:9]E =1 2 34 5 67 8 9>> D = 0 : 0.5 : 3D =0 0.5 1.0 1.5 2.0 2.5 3.0
  31. 31. >> A = [1 : 2 : 15]A =1 3 5 7 9 11 13 15>> A(1,5)ans =9>> B = [1:1:3;2:2:6;5:2:9]B =1 2 32 4 65 7 9>> b = [10 20 30]b =10 20 30>> B = [B;b]B =1 2 32 4 65 7 910 20 30>> B(1:3,2)ans =247>> B(3,:)ans =5 7 9>> B([2 3],[1 2])ans =2 45 7>> B(end,:)ans =10 20 30Manipulação de MatrizesMATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  32. 32. Manipulação de matrizes>> A = ones(3,3)A =1 1 11 1 11 1 1>> B = zeros(4,3)B =0 0 00 0 00 0 00 0 0>> I = eye(4,4)I =1 0 0 00 1 0 00 0 1 00 0 0 1>> C = rand(3,3)C =0.8147 0.9134 0.27850.9058 0.6324 0.54690.1270 0.0975 0.9575>> rand(seed,0)>> D = rand(3,3)D =0.2190 0.6793 0.51940.0470 0.9347 0.83100.6789 0.3835 0.0346>> E = diag(D)E =0.21900.93470.0346MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  33. 33. Manipulação de matrizes>> A = ones(3,3)A =1 1 11 1 11 1 1>> dimA = size(A)dimA =2 3>> A1 = diag(A)A1 =111>> maxdimA = length(A)maxdimA =3>> B = diag(5 * A1)B =5 0 00 5 00 0 5>> rand(seed,10)>> C = rand(size(A))C =0.1291 0.9505 0.15970.6048 0.3367 0.78080.5040 0.0924 0.6925>> C1 = triu(C)C1 =0.1291 0.9505 0.15970 0.3367 0.78080 0 0.6925>> C2 = tril(C)C2 =0.1291 0 00.6048 0.3367 00.5040 0.0924 0.6925MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  34. 34. ExercíciosDefina as matrizes e efetue as seguintesoperações:MATLAB: Conceitos Básicos - Rodolfo Maduro Almeidaíndicesdemaisospara3,ímparesepara,2paresepara,1)( 99jijibB ijíndicesdemaisospara3,parímparpara,2ímparparpara,6)( 99jeijeiaA ija) A * A‟b) B^2c) B.^2d) A * Be) A .^Bf) A./B
  35. 35. Exercícios>> A = 3 * ones(9,9)>> A(2:2:end,1:2:end)=6>> A(1:2:end,2:2:end)=2>> disp(A)3 2 3 2 3 2 3 2 36 3 6 3 6 3 6 3 63 2 3 2 3 2 3 2 36 3 6 3 6 3 6 3 63 2 3 2 3 2 3 2 36 3 6 3 6 3 6 3 63 2 3 2 3 2 3 2 36 3 6 3 6 3 6 3 63 2 3 2 3 2 3 2 3MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  36. 36. Exercícios>> B = 3 * ones(9,9)>> B(2:2:end,2:2:end)=1>> B(1:2:end,1:2:end)=2>> disp(B)2 3 2 3 2 3 2 3 23 1 3 1 3 1 3 1 32 3 2 3 2 3 2 3 23 1 3 1 3 1 3 1 32 3 2 3 2 3 2 3 23 1 3 1 3 1 3 1 32 3 2 3 2 3 2 3 23 1 3 1 3 1 3 1 32 3 2 3 2 3 2 3 2MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  37. 37. Operadores lógicos erelacionaisMATLAB: Conceitos Básicos - Rodolfo Maduro AlmeidaOperadorrelacionalSímboloIgual ==Diferente ~=Maior >Menor <Maior ou igual >=Menor ou igual <=OperadorlógicoSímboloE &Ou |Não ~1: True – Verdadeiro0: False - Falso
  38. 38. Operadores lógicos erelacionais>> 2 == 3ans = 0>> 2 <= 3ans = 1>> (2 == 3) & (2 <= 3)ans = 0>> ~(2 == 3) & (2 <= 3)ans = 1>> (2 ~= 3) & (2 <= 3)ans = 1MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  39. 39. Trabalhando com scripts• O que é um script?o conjunto de instruções do MATLAB que podem serexecutadas sistematicamente.• Para que serve?o Sintetiza os comandos freqüentemente digitadosem um único comando (o script com os comandos éexecutado)o Aplicável a problemas mais extensos onde é exigidomais comandosMATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  40. 40. Editando scriptsMATLAB: Conceitos Básicos - Rodolfo Maduro AlmeidaOutra opção: File > New M-File
  41. 41. Programando em MATLABMATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  42. 42. Programando em MATLABMATLAB: Conceitos Básicos - Rodolfo Maduro AlmeidaSalvar o script emum diretório de suapreferênciaExecutar o script.Atalho: F5
  43. 43. Entrada e Saída (tela)• Comando de entrada: inputR = input(‘Forneca o valor de entrada:)>>Forneca o valor de entrada: <digitar valor> <enter>• Comando de saida: dispdisp(X)Mostra o valor de X na janela de comandos.disp(Ola Mundo!)>>Ola Mundo!MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  44. 44. Entrada e Saída (tela)clcA = input(Forneca uma matriz 2 x 2: );B = input(Forneca uma matriz 2 x 2: );C1 = A + B;C2 = A * B;disp(Soma entre as duas matrizes: );disp(C1)disp(Produto entre as duas matrizes: );disp(C2)MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  45. 45. Entrada e Saída (arquivos)• Comando de entrada: loadFormato ASCII:>> x = load(arquivo.txt);Formato binário do MATLAB:>> load arquivo.mat• Comando de saída: saveFormato ASCII:>> save „arquivo.txt‟ variaveis –asciiFormato binário do MATLAB:>> save „arquivo.mat‟ variaveisMATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  46. 46. Entrada e Saída (arquivos)dados = load(lorenz_xyz.txt);t = dados(:,1);x = dados(:,2);y = dados(:,3);z = dados(:,4);save lorenz_xyz.mat t x y z;MATLAB: Conceitos Básicos - Rodolfo Maduro AlmeidaObtenha o arquivo: http://br.geocities.com/rodmaduro/lorenz_xyz.txt
  47. 47. Controladores de fluxoif expressao_1instrucoes_1elseinstrucoes_2endif expressao_1instrucoes_1elseif expressao_2instrucoes_2elseinstrucoes_3endMATLAB: Conceitos Básicos - Rodolfo Maduro Almeidaif: cria caminhos alternativos na execução deum script.
  48. 48. Controladores de fluxodisp(Script que compara dois numeros)a = input(Forneca um numero: );b = input(Forneca outro numero: );if a > bdisp([Numero maior: num2str(a)])disp([Numero menor: num2str(b)])elsedisp([Numero maior: num2str(b)])disp([Numero menor: num2str(a)])endMATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  49. 49. Controladores de fluxodisp(Script que compara dois numeros)a = input(Forneca um numero: );b = input(Forneca outro numero: );if a > bdisp([Numero maior: num2str(a)])disp([Numero menor: num2str(b)])elseif a < bdisp([Numero maior: num2str(b)])disp([Numero menor: num2str(a)])elsedisp([Os dois numeros sao iguais a num2str(a)])endMATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  50. 50. Controladores de fluxofor variavel = valor_inicial:passo:valor_finalinstrucoes;endMATLAB: Conceitos Básicos - Rodolfo Maduro Almeidafor: permite que um grupo de instruções serepitam por um número especificado de vezes.
  51. 51. Controladores de fluxoN = input(Forneca a dimensao da matriz: );A = zeros(N,N);for i = 1:Nfor j=1:NA(i,j) = 2 * i - 3 * j;endenddisp(A)MATLAB: Conceitos Básicos - Rodolfo Maduro AlmeidajiaA NNij 32)(
  52. 52. Controladores de fluxoclcN = input(Forneca a dimensao da matriz: );A = zeros(N,N);for i = 1:Nfor j=1:Nif (mod(i,2) == 0) & (mod(j,2) == 1)A(i,j) = 6;elseif (mod(i,2) == 1) & (mod(j,2) == 0)A(i,j) = 2;elseA(i,j) = 3;endendenddisp(A)MATLAB: Conceitos Básicos - Rodolfo Maduro Almeidaíndicesdemaisospara3,parímparpara,2ímparparpara,6)( 99jeijeiaA ij
  53. 53. Controladores de fluxowhile (expressao de controle)instrucoes;endMATLAB: Conceitos Básicos - Rodolfo Maduro Almeidawhile: permite que um grupo de instruções serepitam enquanto uma determinada expressãode controle for verdadeira.
  54. 54. Controladores de fluxoEPS = 2;while (1+EPS) > 1EPS = EPS/2;enddisp(EPS)MATLAB: Conceitos Básicos - Rodolfo Maduro AlmeidaEPS é o maior número que adicionado a 1 torna seu valor igual a 1.Isso acontece porque o computador um utiliza número fixo de dígitospara representar os números. O MATLAB usa 16 dígitos de precisão,nesse caso o valor de EPS será próximo de 10^(-16):>> EPSEPS =1.1102e-016>> 1 + EPS == 1ans =1
  55. 55. Controladores de fluxoMATLAB: Conceitos Básicos - Rodolfo Maduro Almeidabreak: encerra a execução de um laço derepetição (for ou while).EPS = 1;for num = 1 : 1000EPS = EPS / 2;if ~((1+EPS) > 1)breakendenddisp(EPS)EPS = 1;while (1+EPS) > 1EPS = EPS/2;enddisp(EPS)
  56. 56. Visualizando figuras• Comando plot: gera um gráfico 2D>> plot(x,y)y: vetor linha ou vetor colunay: vetor linha ou vetor coluna• Exemplo:x = -pi:0.001:pi;y = sin(x);plot(x,y)axis([-pi pi -1 1])xlabel(x)ylabel(sin(x))title(Grafico da Função Seno)MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  57. 57. Visualizando figuras• Comando plot3: gera um gráfico 3D>> plot3(x,y,z)y: vetor linha ou vetor colunay: vetor linha ou vetor colunaz: vetor linha ou vetor coluna• Exemplo:t = 0 : pi/50 :10*pi;plot3(sin(t) ,cos(t) ,t)axis([-1 1 -1 1 0 40])xlabel(x)ylabel(„y)zlabel(„z)grid onMATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  58. 58. Salvando figuras• Comando print:print(gcf,formato,nome_da_figura)Formatos mais comuns:-dpng: salva figura em PNG-deps: salva em Encapsulated PostScript-depsc: salva Encapsulated Color PostScriptMATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  59. 59. Salvando figurasclc; close all;dados = load(lorenz_xyz.txt);t = dados(:,1);x = dados(:,2);y = dados(:,3);z = dados(:,4);figure;subplot(3,1,1)plot(t,x)xlabel(t)ylabel(x(t))subplot(3,1,2)plot(t,y)xlabel(t)ylabel(z(t))subplot(3,1,3)plot(t,z)xlabel(t)ylabel(z(t)‘)print(gcf,-dpng,‘lorenz_xyz.png)MATLAB: Conceitos Básicos - Rodolfo Maduro AlmeidaPara baixar o aquivo lorenz_xyz.txtclique aqui.
  60. 60. Salvando figurasclc; close all;dados = load(lorenz_xyz.txt);t = dados(:,1);x = dados(:,2);y = dados(:,3);z = dados(:,4);figure;plot3(x,y,z)xlabel(x(t))ylabel(x(t))zlabel(z(t))grid onprint(gcf,-dpng,‘lorenz3d.png)MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  61. 61. Funções em MATLAB• Uma função é um trecho de código que admiteparâmetros de entrada e retorna valores.• Arquivos “.m” podem ser tanto scripts quantofunções.• Os comandos nativos do MATLAB são funçõescriadas na sua própria linguagem.function variavel_retorno = nome_da_funcao(variaveis_entrada)instrucoes para obter variavel_retorno;MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  62. 62. Criando uma função noMATLABfunction distancia = calcula_distancia(x,y)diferenca = x - y;distancia = sqrt(diferenca*transpose(diferenca));MATLAB: Conceitos Básicos - Rodolfo Maduro AlmeidaExemplo: Função que calcula a distancia euclidiana entredois vetores do Rn. Crie e salve o seguinte arquivo “.m”:
  63. 63. • Para executar essa função, vá a janela decomando e proceda da seguinte forma:>> p = [1 0 0];>> q = [0 1 0];>> d = calcula_distancia(p, q)• Ou:>> d = calcula_distancia([1 0 0], [0 1 0])Criando uma função noMATLABMATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  64. 64. Como aprender maise mais sobre MATLAB?• Acessando sua documentação:Comando doc:>> doc• Acessando scripts demonstrativos:Comando demo:>> demo• Maiores esclarecimentos sobre algum comando:>> help comandoExemplo:>> help plot>> doc plotMATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  65. 65. Como aprender maismais sobre MATLAB?• Livros sobre MATLABMATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  66. 66. Como aprender maise mais sobre MATLAB?• Google:MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
  67. 67. MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida

×