curso basico de matlab.pdf

12
Apostila de MatLab Computação Aplicada à Engenharia Página 1 de 12

Upload: arthur-azevedo

Post on 16-Apr-2015

117 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Curso Basico de MATLAB.pdf

Apostila de MatLab

Computação Aplicada à Engenharia Página 1 de 12

Page 2: Curso Basico de MATLAB.pdf

Apostila de MatLab

Curso Básico de MATLAB

Computação Aplicada à Engenharia

Cleve Moler - criador do MATLABReedição e formatação: Michael Juliano Silva

INTRODUÇÃO

O que é o MATLAB (MATrix LABoratory)?

“É um ambiente de computação técnico-científico para desenvolvimento de sistemas sofisticados e eficientes”.

Computação Aplicada à Engenharia Página 2 de 12

Page 3: Curso Basico de MATLAB.pdf

Apostila de MatLab

CONTEÚDO

1. Geração de Sinais .................................................................................................................

- Matemática elementar .............................................................................................. 04

- Espaço de trabalho .................................................................................................... 05

- Variáveis .................................................................................................................... 05

- Comentários e pontuação ......................................................................................... 05

- Números complexos .................................................................................................. 06

- Aritmética de ponto flutuante .................................................................................. 06

- Funções existentes ..................................................................................................... 06

2. Vetores e Matrizes ................................................................................................................

- Vetores simples .......................................................................................................... 06

- Endereçamento vetorial ............................................................................................ 07

- Construções de vetores ............................................................................................. 07

- Matrizes ...................................................................................................................... 08

- Matemática vetor-escalar ......................................................................................... 08

- Matemática vetor-vetor ............................................................................................ 08

- Matrizes padrão ........................................................................................................ 09

- Manipulação de matrizes e vetores .......................................................................... 10

- Matrizes celulares e estruturas ................................................................................ 10

3. Leitura e escrita de arquivos .......................................................................................... 10

4. Gráficos 2D e 3D ............................................................................................................. 10

5. Programação (script e função) ...................................................................................... 11

6. Simulink .......................................................................................................................... 11

7. Bibliografia ...................................................................................................................... 12

Computação Aplicada à Engenharia Página 3 de 12

Page 4: Curso Basico de MATLAB.pdf

Apostila de MatLab

Tela de interface do Software:

Matemática elementarTrabalha como se fosse uma calculadora:>> 4+6+2ans = 12>> 4*25 + 6*52 + 2*99ans = 610>>

Podemos armazenar os resultados em variáveis:>> borrachas = 4borrachas = 4>> blocos = 6;>> fitas = 2;>> itens = borrachas + blocos + fitasitens = 12>> custo = borrachas*25 + blocos*52 + fitas*99custo = 610

Computação Aplicada à Engenharia Página 4 de 12

Page 5: Curso Basico de MATLAB.pdf

Apostila de MatLab

>>

Operações Aritméticas Elementares:Operação Símbolo ExemploAdição + 3 + 22Subtração - 54.4 - 16.5Multiplicação * 3.14 * 6Divisão / ou \ 19.54/7 ou 7\19.54Potenciação ^ 2^8

(da menor para a maior precedência)

Espaço de trabalhoTodos os comandos e as variáveis criadas na janela de comando estão no Espaço de Trabalho do MATLAB.Para saber quais variáveis existem basta usar o comando:>> fitasfitas = 2Para saber quais variáveis existem basta usar o comando:>> whoYour variables are:ans custo blocosfitas borrachas itens >>

Variáveis- As variáveis distinguem letras maiúsculas de minúsculas. Ex.: Custo, custo, CuStO e CUSTO.- Não existe limitação no tamanho do nome da variável, mas o MATLAB apenas considera os primeiros 31 caracteres.- Os nomes devem começar com uma letra, seguida de um número qualquer de letra, algarismos ou sublinhados.- Caracteres de pontuação não são permitidos.- Não podem ser usadas as palavras-chaves: for, end, if, while, function, return, elseif, case, otherwise, switch, continue, else, try, catch, global, persistent e break.

Existem as seguintes variáveis especiais:ans padrão usado para resultadosbeep o computador emiti um bippi 3.14159265...inf infinitonan valor não-numérico (ex.: 0/0)i ou j valor para Também existem as variáveis: eps, nargin, nargout, realmin, realmax, bitmax, varargin e vararout.Caso os valores dessas variáveis sejam alterados, o comando clear <variável> volta ao valor inicial.

Comentários e PontuaçãoComentários:>> fitas = 2; % número de rolos de fita adesiva>>

Vírgula e Ponto-e-Vírgula:>> borrachas = 6, blocos = 6; fitas = 2borrachas = 6

Computação Aplicada à Engenharia Página 5 de 12

Page 6: Curso Basico de MATLAB.pdf

Apostila de MatLab

fitas = 2>>CTRL+C para interromper

Números Complexoss>> fitas = 2; % número de rolos de fita adesiva>>

Aritmética de Ponto Flutuante>> format long % exibi nº c/ mais precisão>> epsans = 2.220446049250313e-016>> 0.42 – 0.5 + 0.08ans = -1.387778780781446e-017>> 0.08 - 0.5 + 0.42ans = 0>> 0.08 + 0.42 - 0.5ans = 0Devido a aproximações nas representações internas no computador.

Funções ExistentesFunções Trigonométricas:sin, cos, tan, asin, acos, atan, sec, asec, csc,acsc, ...

Funções Exponenciais:^, exp, log, log10, log2, pow2, sqrt, nextpow2Funções Complexas:abs, angle, conj, imag, real, complex, ...Funções de Arredondamento e Resto:fix, floor, ceil, round, mod, rem, signOutras Funções:factor, isprime, besselj, gamma, cross, ...Ajuda: help <função>

Vetores SimplesComo calcular y = sen(x) em 0xx pois existem infinitos pontos nesta faixa?

Solução: escolher um número finito de pontos. Estamos fazendo uma amostragem da função.>> x = [0 .1*pi .2*pi .3*pi .4*pi .5*pi .6*pi .7*pi .8*pi .9*pi pi]x = Columns 1 through 6 0 0.3142 0.6283 0.9425 1.2566 1.5708 Columns 7 through 11 1.8850 2.1991 2.5133 2.8274 3.1416>> y = sin(x)y = Columns 1 through 6 0 0.3090 0.5878 0.8090 0.9511 1.0000

Computação Aplicada à Engenharia Página 6 de 12

Page 7: Curso Basico de MATLAB.pdf

Apostila de MatLab

Columns 7 through 11 0.9511 0.8090 0.5878 0.3090 0.0000>>

Endereçamento VetorialPodemos acessar às componentes usando índices:>> x(3) % o terceiro elemento de xans = 0.6283>> y(5) % o quinto elemento de xans = 0.9511>> x(1:5) % notação de dois-pontosans = 0 0.3142 0.6283 0.9425 1.2566>> x(7:end) % até o fim do vetorans = 1.8850 2.1991 2.5133 2.8274 3.1416

Podemos acessar às componentes usando índices:>> y(3:-1:1) % ordem inversaans = 0.5878 0.3090 0>> x(2:2:7) % a cada 2ans = 0.3142 0.9425 1.5708>> y([8 2 9 11]) % na ordem que queremosans = 0.8090 0.3090 0.5878 0.0000

Construção de VetoresComo construir vetores grandes?>> x = (0:0.1:1)*pix = Columns 1 through 6 0 0.3142 0.6283 0.9425 1.2566 1.5708 Columns 7 through 11 1.8850 2.1991 2.5133 2.8274 3.1416>> x = linspace(0,pi,11)x = Columns 1 through 6 0 0.3142 0.6283 0.9425 1.2566 1.5708 Columns 7 through 11 1.8850 2.1991 2.5133 2.8274 3.1416

>> a = [1:5], b = [linspace(1,5,4)]a = 1 2 3 4 5b = 1.0000 2.3333 3.6667 5.0000>> c = [b a]c = Columns 1 through 4 1.0000 2.3333 3.6667 5.0000 Columns 5 through 8 1.0000 2.0000 3.0000 4.0000 Column 9 5.0000

Computação Aplicada à Engenharia Página 7 de 12

Page 8: Curso Basico de MATLAB.pdf

Apostila de MatLab

>>

>> a = (1:7)' % transforma a linha em colunaa = 1 2 3 4 5 6 7

>>

Matrizes>> g = [1 2 3 4;5 6 7 8]g = 1 2 3 4 5 6 7 8>> g = [ 1 2 3 45 6 7 89 10 11 12]g = 1 2 3 4 5 6 7 8 9 10 11 12

>>

Matemática Vetor-Escalar>> g-2ans = -1 0 1 2 3 4 5 6 7 8 9 10>> 2*g/5 + 1ans = 1.4000 1.8000 2.2000 2.6000 3.0000 3.4000 3.8000 4.2000 4.6000 5.0000 5.4000 5.8000>>

Matemática Vetor-Vetor>> g = [1 2 3 4;5 6 7 8;9 10 11 12];>> h = [1 1 1 1;2 2 2 2;3 3 3 3];>> g + h % soma h e g, elemento por elementoans = 2 3 ...>> ans - h % subtrai h de ans elemento por elementoans = 1 2 ...>> 2*g - h % multiplica g por 2 e subtrai h do resultadoans = 1 3 ...>> 2*(g – h) % parênteses p/ alterar a ordem das operaçõesans =0 2 ...

Computação Aplicada à Engenharia Página 8 de 12

Page 9: Curso Basico de MATLAB.pdf

Apostila de MatLab

Multiplicação/divisão escalar pontuada:>> g.*h % multiplicação elemento por elementoans = 1 2 3 4 10 12 14 16 27 30 33 36>> g./h % divisão elemento por elementoans = 1.0000 2.0000 3.0000 4.0000 2.5000 3.0000 3.5000 4.0000 3.0000 3.3333 3.6667 4.0000>> h.\g % item ao anteriorans =1.0 2.0000 ...

Divisão matricial:>> g/hWarning: Rank deficient, rank = 1 tol = 5.3291e-015.Ans = 0 0 0.8333 0 0 2.1667 0 0 3.5000>> h/gWarning: Rank deficient, rank = 2 tol = 1.8757e-014.ans = -0.1250 0 0.1250 -0.2500 0 0.2500 -0.3750 0 0.3750Importante para álgebra matricial

Multiplicação matricial:>> A = [1 2 3; 4 5 6; 7 8 0];>> y = [366;804;351];>> x = inv(A)*yx = 25.0000 22.0000 99.0000É a solução do sistema de equações lineares:

Matrizes Padrão>> ones(3) % matriz 3x3, todos elementos = 1>> zeros(2,5) % matriz 2x5, todos elementos = 0>> size(g) % diz as dimensões da matrix>> ones(size(g))>> eye(4) % matriz identidade>> eye(4,2)>> rand(3) % matriz 3x3 de números aleatórios>> rand(size(eye(3)))>> randn(2,5) % nº aleatórios com distribuição normal % média zero e variância igual a um.>> a = 1:4 % vetor simples>> diag(a) % coloca elementos na diagonal principal

Computação Aplicada à Engenharia Página 9 de 12

Page 10: Curso Basico de MATLAB.pdf

Apostila de MatLab

Manipulação de Matrizes e Vetores>> A = [1 2 3;4 5 6;7 8 9]>> A(3,3) = 0 % atribui zero ao elemento L=3, C=3>> A(2,6) = 6 % atribui 1 a L=2, C=6, ampliando a matriz>> A(:,4) = 4 % atribui 4 para C=4>> A(:,4) = [4;4;4] % item ao anterior>> A = [1 2 3;4 5 6;7 8 9]>> B = A(3:-1:1,1:3) % inverte as linhas>> B = A(3:-1:1,:) % dois-pontos indica todas as colunas>> C = [A B(:,[1 3])]>> B = A(1:2,2:3)>>

Matrizes Celulares e EstruturasPermite que matrizes diferentes, mas relacionadas, sejam agrupadas em uma única variável.A diferença entre matriz celular e estrutura é que a matriz celular identifica os locais de armazenamento de dados (células) por números e a estrutura identifica esses locais (elementos da estrutura) por nome.

>> A = [1 2 3; 4 5 6; 7 8 0];>> y = [3 22.0000 99.000

Leitura e Escrita de arquivosO MATLAB tem várias maneiras de ler ou escrever em arquivos, trabalhando com vários formatos.Para salvar as variáveis em um arquivo.mat:save arquivo <var1> <var2> ... <varN>Para carregar as variáveis em um arquivo.mat:load arquivo <var1> <var2> ... <varN>Caso o arquivo ou a variável já existem esses são motificados sem perguntar ao usuário.Outros comandos para manipulação de arquivos:ldlmread, dlmwrite, importdata, imfinfo, imread, auread,auwrite, wavread, wavwrite, aviread, getframe, movie2avi,fopen, fclose, fgets, fprintf, fscanf, textread, sprintf,sscanf, strread, fread, fwrite, feof, ftell, fseek, ...

Gráfico 2D e 3DGerando um gráfico das funções seno e cosseno:>> x = 0:0.1:2*pi; % vetor das ordenadas>> y = sin(x); % vetor da absissas>> plot(x,y); % plota o gráfico na janela figura 1>> xlabel('x');>> ylabel('y');>> title('Gráfico f(x) = sen(x)');>> legend('sen(x)');>> figure(2); % segunda janela>> y1 = cos(x);>> plot(x,y);>> xlabel('x');>> ylabel('y');>> title('Gráfico f(x) = cos(x)');>> legend('cos(x)');

Computação Aplicada à Engenharia Página 10 de 12

Page 11: Curso Basico de MATLAB.pdf

Apostila de MatLab

>> x = -2*pi:0.1:2*pi;>> y = x .* cos(2*x);>> figure(1);>> plot(x,y,'r+');>> axis([-pi pi -2 2]);>> grid>> title('Gráfico f(x) = x*cos(2x)')>> xlabel('Eixo X')>> ylabel('Eixo Y')>> legend('x*cos(2x)')>> legend('cos(x)');

Outras funções para plotar em 2D:loglog, semilogx, semilogy, polar, subplot, zoom, box,hold, axes, text, print, area, bar, pie, comet, compass, ...

Gráficos 3D:>> % Exemplo 1>> x = -4*pi:0.1:4*pi;>> y = -4*pi:0.1:4*pi;>> plot3(cos(x),sin(y),(x+y))>> >> % Exemplo 2>> figure(2);>> x = -2:0.2:2;>> y = -5:0.2:5;>> [mx,my]=meshgrid(x,y);>> mz=exp(sin(mx).*cos(my));>> mesh(mx, my, mz);>> figure(3);>> surf(mx, my, mz);

ProgramaçãoPara automatizar as tarefas o MATLAB possui dois recursos:- Scripts- FunçõesOs scripts permitem a automação de tarefas. Eles utilizam o mesmo espaço de variáveis.As funções também vão permitir a automação de tarefas, mas durante a sua execução terá o seu próprio espaço de variáveis, alem de aceitar parâmetros de entrada e ter uma saída.

Funções importantes:>> beep % faz o computador emitir um bip>> disp(variável) % mostra o conteúdo da variável>> disp('texto') % mostra o texto>> a = input('texto'); % mostra o texto e lê o teclado % colocando o valor na variável a>> echo on % habilita modo de depuração>> echo off % desabilita modo de depuração>> pause(n) % suspende a execução por n segundos>> waitforbuttonpress % suspende a execução até que o % usuário pressione uma tecla

Computação Aplicada à Engenharia Página 11 de 12

Page 12: Curso Basico de MATLAB.pdf

Apostila de MatLab

Bibliografia

Hanselman, D.; Littlefield, B.; MATLAB 6 Curso Completo; Prentice Hall; 2003Matsumoto, É. Y.; MATLAB 6.5 Fundamentos de Programação; Editora Érica; 2002 Matsumoto, É. Y.; Simulink 5 Fundamentos; Editora Érica; 2003

Computação Aplicada à Engenharia Página 12 de 12