Apostila de MatLab
Computação Aplicada à Engenharia
Página 1 de 12
Apostila de MatLab
Curso Básico de MATLAB Computação Aplicada à Engenharia Cleve Moler - criador do MATLAB Reedição e formatação: Michael Juliano Silva
INTRODUÇÃO O que é o MATLAB (MATrix LABoratory)? “É um ambiente de computação técnico-científico desenvolvimento de sistemas sofisticados e eficientes”.
Computação Aplicada à Engenharia
para
Página 2 de 12
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
Apostila de MatLab
Tela de interface do Software:
Matemática elementar Trabalha como se fosse uma calculadora: >> 4+6+2 ans = 12 >> 4*25 + 6*52 + 2*99 ans = 610 >> Podemos armazenar os resultados em variáveis: >> borrachas = 4 borrachas = 4 >> blocos = 6; >> fitas = 2; >> itens = borrachas + blocos + fitas itens = 12 >> custo = borrachas*25 + blocos*52 + fitas*99 custo = 610
Computação Aplicada à Engenharia
Página 4 de 12
Apostila de MatLab
>>
Operações Aritméticas Elementares:
Operação Adição Subtração Multiplicação Divisão Potenciação
Símbolo + * / ou \ ^
Exemplo 3 + 22 54.4 - 16.5 3.14 * 6 19.54/7 ou 7\19.54 2^8
(da menor para a maior precedência)
Espaço de trabalho Todos 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: >> fitas fitas = 2
Para saber quais variáveis existem basta usar o comando: >> who Your variables are: ans custo fitas borrachas >>
blocos 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: padrão usado para resultados ans beep o computador emiti um bip 3.14159265... pi infinito inf valor não-numérico (ex.: 0/0) nan 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 volta ao valor inicial.
Comentários e Pontuação Comentários: >> fitas = 2; >>
% número de rolos de fita adesiva
Vírgula e Ponto-e-Vírgula: >> borrachas = 6, blocos = 6; fitas = 2 borrachas = 6
Computação Aplicada à Engenharia
Página 5 de 12
Apostila de MatLab
fitas = 2 >>
CTRL+C para interromper
Números Complexos s >> fitas = 2; >>
% número de rolos de fita adesiva
Aritmética de Ponto Flutuante >> format long % exibi nº c/ mais precisão >> eps ans = 2.220446049250313e-016 >> 0.42 – 0.5 + 0.08 ans = -1.387778780781446e-017 >> 0.08 - 0.5 + 0.42 ans = 0 >> 0.08 + 0.42 - 0.5 ans = 0
.
Devido a aproximações nas representações internas no computador
Funções Existentes Funções Trigonométricas: sin, cos, tan, asin, acos, atan, sec, asec, csc, acsc, ... Funções Exponenciais: ^, exp, log, log10, log2, pow2, sqrt, nextpow2
Funções Complexas: abs, angle, conj, imag, real, complex, ...
Funções de Arredondamento e Resto: fix, floor, ceil, round, mod, rem, sign
Outras Funções: factor, isprime, besselj, gamma, cross, ... Ajuda: help
Vetores Simples Como 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
Apostila de MatLab
Columns 7 through 11 0.9511 0.8090 0.5878 >>
0.3090
0.0000
Endereçamento Vetorial Podemos acessar às componentes usando índices: >> x(3) % o terceiro elemento de x ans = 0.6283 >> y(5) % o quinto elemento de x ans = 0.9511 >> x(1:5) % notação de dois-pontos ans = 0 0.3142 0.6283 0.9425 >> x(7:end) % até o fim do vetor ans = 1.8850 2.1991 2.5133 2.8274
1.2566
3.1416
Podemos acessar às componentes usando índices: >> y(3:-1:1) % ordem inversa ans = 0.5878 0.3090 0 >> x(2:2:7) % a cada 2 ans = 0.3142 0.9425 1.5708 >> y([8 2 9 11]) % na ordem que queremos ans = 0.8090 0.3090 0.5878 0.0000
Construção de Vetores Como construir vetores grandes? >> x = (0:0.1:1)*pi x = Columns 1 through 6 0 0.3142 0.6283 Columns 7 through 11 1.8850 2.1991 2.5133 >> x = linspace(0,pi,11) x = Columns 1 through 6 0 0.3142 0.6283 Columns 7 through 11 1.8850 2.1991 2.5133
0.9425
1.2566
2.8274
3.1416
0.9425
1.2566
2.8274
3.1416
1.5708
1.5708
>> a = [1:5], b = [linspace(1,5,4)] a = 1 2 3 4 5 b = 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
Apostila de MatLab
>> >> a = (1:7)' a = 1 2 3 4 5 6 7
% transforma a linha em coluna
>>
Matrizes >> g = [1 2 3 4;5 6 7 8] g = 1 2 3 4 5 6 7 8 >> g = [ 1 2 3 4 5 6 7 8 9 10 11 12] g = 1 2 3 4 5 6 7 8 9 10 11 12 >>
Matemática Vetor-Escalar >> g-2 ans = -1 3 7 >> 2*g/5 + ans = 1.4000 3.0000 4.6000 >>
0 4 8 1
1 5 9
1.8000 3.4000 5.0000
2 6 10
2.2000 3.8000 5.4000
2.6000 4.2000 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 elemento ans = 2 3 ... >> ans - h % subtrai h de ans elemento por elemento ans = 1 2 ... >> 2*g - h % multiplica g por 2 e subtrai h do resultado ans = 1 3 ... >> 2*(g – h) % parênteses p/ alterar a ordem das operações ans = 0 2 ...
Computação Aplicada à Engenharia
Página 8 de 12
Apostila de MatLab
Multiplicação/divisão escalar pontuada:
>> g.*h % multiplicação elemento por elemento ans = 1 2 3 4 10 12 14 16 27 30 33 36 >> g./h % divisão elemento por elemento ans = 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 anterior ans = 1.0 2.0000 ... Divisão matricial:
>> g/h Warning: Rank deficient, rank = 1 tol = 5.3291e-015. Ans = 0 0 0.8333 0 0 2.1667 0 0 3.5000 >> h/g Warning: Rank deficient, rank = 2 tol = 1.8757e-014. ans = -0.1250 0 0.1250 -0.2500 0 0.2500 -0.3750 0 0.3750 Importante para álgebra matricial Multiplicação matricial:
>> A = [1 2 3; 4 5 6; 7 8 0]; >> y = [366;804;351]; >> x = inv(A)*y x= 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
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 Estruturas Permite 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 arquivos O 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 ... Para carregar as variáveis em um arquivo.mat: load arquivo ...
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 3D Gerando 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
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ção Para automatizar as tarefas o MATLAB possui dois recursos: - Scripts - Funções Os 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
Apostila de MatLab
Bibliografia
Hanselman, D.; Littlefield, B.; MATLAB 6 Curso Completo ; Prentice Hall; 2003 Matsumoto, É. 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