Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Introdução à Programação em MATLAB: Exemplos e Comandos Básicos, Notas de estudo de Engenharia Mecânica

Um breve tutorial sobre como utilizar a ferramenta matlab para realizar cálculos matemáticos e gráficos. O texto aborda os conceitos básicos de variáveis, atribuição de valores, listas, funções e gráficos, fornecendo exemplos práticos para cada tema. Além disso, o documento inclui informações sobre como importar e exportar dados, além de como criar e editar gráficos.

Tipologia: Notas de estudo

2014

Compartilhado em 23/07/2014

luis-felipe-suckert-quintas-4
luis-felipe-suckert-quintas-4 🇧🇷

4.7

(27)

121 documentos

1 / 32

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
MATLAB para o Curso de Mecanismos
Ricardo Cury Ibrahim
(vers˜
ao 01/2005)
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20

Pré-visualização parcial do texto

Baixe Introdução à Programação em MATLAB: Exemplos e Comandos Básicos e outras Notas de estudo em PDF para Engenharia Mecânica, somente na Docsity!

MATLAB para o Curso de Mecanismos

Ricardo Cury Ibrahim

(vers˜ao 01/2005)

Conte´udo

  • 1 Introduc¸ ˜ao
  • 2 Conceitos Gerais
  • 3 Operac¸ ˜oes matem´aticas simples
  • 4 Armazenando dados em vari´aveis
  • 5 Formato dos n ´umeros
  • 6 Utilizando func¸ ˜oes matem´aticas elementares
  • 7 Listas
    • 7.1 Operac¸ ˜oes matem´aticas com listas
  • 8 Matrizes
    • 8.1 Operac¸ ˜oes matem´aticas com matrizes
  • 9 Loops e tomadas de decis˜ao
    • 9.1 Loops usando for
    • 9.2 Loops usando while
    • 9.3 Tomadas de decis˜ao usando if-else
  • 10 Plotando gr´aficos
  • 11 Trabalhando com arquivos de dados
  • 12 Arquivos de Roteiro - Arquivos M
  • 13 Criando func¸ ˜oes
  • 14 Gr´aficos avanc¸ados
  • 15 Animac¸ ˜oes
  • 16 Utilizando polinˆomios

Uma forma mais conveniente de usar o help do MATLAB ´e abrindo uma janela pr´opria de help. Do menu, escolha Help e selecione MATLAB Help. Na nova janela aberta pode-se encontrar diversos t´opicos de ajuda organizados por um determinado tema. Tente abrir a tabela de help para operac¸ ˜oes elementares com matrizes (elmat). Obviamente, uma outra forma de se obter ajuda nesse tema ´e dar o seguinte comando na janela de comandos:

help elmat Utilizando o comando help sem argumentos far´a com que sejam listados todos os t´opicos gerais de ajuda dos pacotes instalados. Outra forma bastante pr´atica de se aprimorar no MATLAB ´e executar alguns programas demos j´a inclu´ıdos no pacote. Use o comando help demos para obter uma listagem dos demos com func¸ ˜ao geral. Ou use o comando help simdemos para uma listagem dos demos do Simulink. Experimente tamb´em help mechdemos, e descubra quais os demos do simulador SimMechanics Toolbox. Para rodar um demo basta digitar o seu nome ap´os o prompt, na janela de comando, e seguir as instruc¸ ˜oes pr´oprias

3 Opera¸c˜oes matem´aticas simples

Operac¸ ˜oes matem´aticas simples podem ser realizadas diretamente na janela de comandos com o uso dos seguintes caracteres: soma (+), subtrac¸ ˜ao (-), multiplicac¸ ˜ao (*), divis˜ao (/ ou ), potˆencia (ˆ). Exemplo:

3^ ans = 9 E importante saber qual a ordem de precedˆ^ ´ encia dos operadores mencionados acima. Para tanto, teste vocˆe mesmo com v´arios exemplos para descobrir a ordem. Um dos testes para saber qual a precedˆencia entre + e ^ poderia ser calcular 4^2+1. Note que o uso de parˆenteses pode alterar a precedˆencia de acordo com a necessidade. A listagem completa dos operadores pode ser obtida consultando o help de “operators and special characters”, ou dando o comando help ops. A esta altura vocˆe j´a deve ter reparado que muitas vezes o help de algum t´opico ´e muito longo e a informac¸ ˜ao rola pela tela sem parar. Existe uma maneira de se apresentar a informac¸ ˜ao de forma que ao se preencher uma tela o help pare e espere por um novo sinal para apresentar a tela seguinte. Basta usar o comando more. Tente:

more on help ops Para retornar ao modo default, de rolagem sem parar, ´e s´o usar o comando

more off E claro que sempre se pode usar o mouse para rolar^ ´... Por outro lado, a janela gr´afica espec´ıfica de help, ativada pelo menu, ´e ´otima para quem est´a comec¸ando a trabalhar com Matlab.

4 Armazenando dados em vari´aveis

Armazenar dados em vari´aveis ´e uma maneira muito ´util de tratar com operac¸ ˜oes mais complexas. A associac¸ ˜ao de um determinado valor a uma vari´avel ´e bem simples:

a=2. a =

que associa o valor 2. 75 a vari´` avel a. Podemos ter tamb´em:

b=a+4. b =

Se vocˆe esquecer e quiser relembrar o valor armazenado numa determinada vari´avel, basta digitar a vari´avel em seguida ao prompt:

a a =

Para saber todas as vari´aveis j´a usadas, basta usar o comando who, ou abrir a janela “Workspace”. Algumas regras devem ser seguidas para definic¸ ˜ao de vari´aveis.

  • o nome da vari´avel deve sempre comec¸ar por uma letra
  • o nome da vari´avel pode conter letras e n´umeros, mas n˜ao se deve usar os s´ımbolos especiais (!@#’%^&, etc.)
  • o MATLAB ´e sens´ıvel ao uso de letras mai´usculas e min´usculas. valor37, Valor37 e VALOR37 s˜ao trˆes vari´aveis diferentes. Algumas vari´aveis j´a s˜ao predefinidas e n˜ao podem mais ser utilizadas. E o caso, por exemplo, de´ pi que ´e a raz˜ao do per´ımetro de uma circunferˆencia pelo seu diˆametro. Note que, excepcionalmente, i ou j representam o n´umero imagin´ario √− 1 , mas tamb´em poder ser usados em vari´aveis. Para deixar de usar uma determinada vari´avel numa sec¸ ˜ao do MATLAB, basta usar o comando clear seguido do nome da vari´avel que se deseja excluir da mem´oria. No MATLAB ´e poss´ıvel salvar em arquivo todas as vari´aveis definidas num determinado trabalho para uso posterior. Para tanto, basta clicar no menu File e selecionar Save Workspace as... para salvar sua sec¸ ˜ao de trabalho atual. As vari´aveis podem ser recuperadas usando a opc¸ ˜ao Load no menu File.

7 Listas

Uma lista ou um vetor ´e uma colec¸ ˜ao de dados de um mesmo tipo e unidimensional, ou seja, a cada elemento se pode associar um ´ındice ´unico. A lista ´e um dos elementos mais ´uteis no MATLAB. A maneira mais simples de se criar uma lista no MATLAB ´e escrevendo seus elementos um a um separados por v´ırgula ou por espac¸o dentro de colchetes.

L1 = [12,exp(1),pi,i] L1 = 12.0000 2.7183 3.1416 0 + 1.0000i ou ent˜ao,

L1 = [12 exp(1) pi i] L1 = 12.0000 2.7183 3.1416 0 + 1.0000i Note que esta ´e uma lista (ou vetor) horizontal. Para criar uma lista vertical (coluna), basta separar seus elementos por ponto e v´ırgula.

L1 = [12;exp(1);pi;i] L1 =

0 + 1.0000i Ou ent˜ao, use o sinal de ap´ostrofo para representar a transposta do vetor linha em seguida ao sinal de ponto:

L1 = [12 exp(1) pi i].’ L1 =

0 + 1.0000i E importante observar que se n˜^ ´ ao fosse usado o sinal de ponto antes do ap´ostrofo o resultado seria o conjugado da transposta, no caso de listas com n´umeros complexos. Verifique vocˆe mesmo! Utilizaremos, em seguida, um exemplo muito comum nos livros sobre MATLAB. Imagine que se queira plotar uma determinada func¸ ˜ao, co-seno por exemplo. Escolhe-se um determinado intervalo de interesse. Diversos elementos compreendidos no intervalo constituem uma lista no eixo horizontal do gr´afico a ser plotado. Ent˜ao, para cada elemento, calcula-se o valor correspondente da func¸ ˜ao desejada. Essa operac¸ ˜ao

formar´a uma outra lista (com mesmo n´umero de elementos) de valores a serem plotados segundo o eixo vertical. Digamos que se queira plotar a func¸ ˜ao co-seno para valores compreendidos no intervalo de −π/ 2 rad (aproximadamente − 1. 5708 ) a 20 rad. Uma maneira de se criar uma lista com, por exemplo, 50 elementos e usando a func´ ¸ ˜ao linspace(x1,x2,n):

x=linspace(-pi/2,20,50);

Note o sinal de ponto e v´ırgula no final da linha de comando. Ele foi usado para evitar que os 50 elementos fossem mostrados na tela. Tente usar o mesmo comando sem o sinal de ponto e v´ırgula e veja o que acontece. Em seguida, veja como ´e pr´atico o uso de listas em MATLAB: para calcular o valor da func¸ ˜ao co-seno para cada elemento da lista basta usar o comando

y=cos(x);

Desta maneira, foi criada uma nova lista y tamb´em com 50 elementos. A cada elemento de uma lista corresponde um ´ındice. O ´ındice do primeiro elemento sempre ´e 1 (e n˜ao zero). O primeiro elemento da lista x (−π/ 2 ) pode ser mostrado com o comando:

x(1) ans = -1. Analogamente, o quinto elemento da lista y e:´

y(5) ans =

Tamb´em ´e poss´ıvel utilizar a notac¸ ˜ao de matrizes para se referir a uma lista. O quinto elemento de uma lista horizontal h seria h(1,5); enquanto que o quinto elemento de uma lista vertical v seria v(5,1). Uma outra maneira de se criar uma lista, em que se tem o primeiro e o ´ultimo elemento e o intervalo constante de variac¸ ˜ao entre elementos subsequentes, ser´a mostrada em seguida. Vamos criar uma lista L 2 de n´umeros reais entre 1 e 0 com espac¸amento − 0. 1. Isto ´e feito da seguinte forma:

L2 = 1:-0.1: L2 = Columns 1 through 7 1.0000 0.9000 0.8000 0.7000 0.6000 0.5000 0. Columns 8 through 11 0.3000 0.2000 0.1000 0

Warning: Divide by zero. ans = Columns 1 through 7 0 0.1111 0.2500 0.4286 0.6667 1.0000 1. Columns 8 through 11 2.3333 4.0000 9.0000 Inf

L2.*L3 %multiplicacao de L2 por L3 elemento a elemento ans = Columns 1 through 7 0 0.0900 0.1600 0.2100 0.2400 0.2500 0. Columns 8 through 11 0.2100 0.1600 0.0900 0

Repare, entretanto, nas seguintes operac¸ ˜oes:

L2L3 %tentativa de multiplicacao de uma matriz (1x11) por outra (1x11) ??? Error using ==> * Inner matrix dimensions must agree. L2L3.’ %multiplicacao de uma matriz (1x11) por outra (11x1) ans =

Note a maneira de se executar uma multiplicac¸ ˜ao ou uma divis˜ao entre listas. Deve-se usar o sinal de ponto (.) antes do s´ımbolo da operac¸ ˜ao de multiplicac¸ ˜ao ou divis˜ao. Operac¸ ˜oes entre listas s´o podem ser executadas se as listas forem de mesma dimens˜ao (mesmo n´umero de elementos). Repare a diferenc¸a entre a divis˜ao direita (/) e a divis˜ao esquerda (). Note tamb´em os resultados e os avisos de divis˜ao por zero.

8 Matrizes

A maneira mais simples de se criar uma matriz em MATLAB ´e inserindo seus elementos um a um, como uma lista, mas separando cada linha da matriz por ponto e v´ırgula:

format bank M1=[3 49 pi; 2^5,0.87,0.2-10*i;100 200 200] M1 =

Repare que o formato dos n´umeros (ver sec¸ ˜ao 5) foi modificado para bank. O que aconteceria se a mesma matriz fosse definida com o formato default do MATLAB ( short )? Um elemento de uma matriz bidimensional pode ser referenciado atrav´es de seus dois ´ındices:

M1(2,3) ans =

As listas (vetores) vistas anteriormente podem ser consideradas um caso particular de matriz unidimensional. Em geral, as matrizes bidimensionais em MATLAB podem ser consideradas como sendo formadas por linhas (ou colunas) de listas. Por exemplo, sejam dadas duas listas definidas abaixo:

format Lis1=linspace(1,10,10) Lis1 = 1 2 3 4 5 6 7 8 9 10 Lis2=linspace(0.1,1,10) Lis2 = Columns 1 through 7 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0. Columns 8 through 10 0.8000 0.9000 1. Pode-se facilmente criar matrizes com estas listas:

Mat1=[Lis1;Lis2] Mat1 = Columns 1 through 7 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7. 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0. Columns 8 through 10 8.0000 9.0000 10. 0.8000 0.9000 1. Mat2=[Lis1.’ Lis2.’]

Extendendo ainda mais o conceito de criac¸ ˜ao de matrizes, uma matriz tamb´em pode ser formada de outra matriz,

Mat3=[Mat1;Lis1] Mat3 = Columns 1 through 7 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7. format bank >> M1=[3 49 pi; 2^5,0.87,0.2-10*i;100 200 200] M1 = Repare que o formato dos n´umeros (ver sec¸ ˜ao 5) foi modificado para bank. O que aconteceria se a mesma matriz fosse definida com o formato default do MATLAB ( short )? Um elemento de uma matriz bidimensional pode ser referenciado atrav´es de seus dois ´ındices: >> M1(2,3) ans = 0. As listas (vetores) vistas anteriormente podem ser consideradas um caso particular de matriz unidimensional. Em geral, as matrizes bidimensionais em MATLAB podem ser consideradas como sendo formadas por linhas (ou colunas) de listas. Por exemplo, sejam dadas duas listas definidas abaixo: >> format >> Lis1=linspace(1,10,10) Lis1 = 1 2 3 4 5 6 7 8 9 10 >> Lis2=linspace(0.1,1,10) Lis2 = Columns 1 through 7 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0. Columns 8 through 10 0.8000 0.9000 1. Pode-se facilmente criar matrizes com estas listas: >> Mat1=[Lis1;Lis2] Mat1 = Columns 1 through 7 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7. 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0. Columns 8 through 10 8.0000 9.0000 10. 0.8000 0.9000 1. >> Mat2=[Lis1.’ Lis2.’] Extendendo ainda mais o conceito de criac¸ ˜ao de matrizes, uma matriz tamb´em pode ser formada de outra matriz, >> Mat3=[Mat1;Lis1] Mat3 = Columns 1 through 7 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7. 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0. 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7. Columns 8 through 10 8.0000 9.0000 10. 0.8000 0.9000 1. 8.0000 9.0000 10. A dimens˜ao de uma matriz pode ser obtida com a func¸ ˜ao size(M).

size(Mat2) ans = 10 2

ou seja, a matriz Mat2 tem dimens˜ao 10 x 2. A matriz identidade pode ser criada com a func¸ ˜ao eye

Ident3=eye(3) Ident3 = 1 0 0 0 1 0 0 0 1

8.1 Opera¸c˜oes matem´aticas com matrizes

As operac¸ ˜oes com matrizes s˜ao bem convenientes com o MATLAB. Uma lista de todas as operac¸ ˜oes pode ser obtida com o comando help matfun. Veja alguns exemplos:

det(M1) ans = -2.9239e+005- 4.3000e+004i inv(M1) ans = -0.0014 - 0.0066i 0.0307 - 0.0045i 0.0002 + 0.0016i 0.0219 + 0.0002i -0.0010 + 0.0001i -0.0003 - 0.0001i -0.0211 + 0.0031i -0.0144 + 0.0021i 0.0052 - 0.0008i Mat1Mat ans = 385.0000 38. 38.5000 3. Mat1.Mat ??? Error using ==> .* Matrix dimensions must agree. Mat1.*Mat2.’ ans = Columns 1 through 7 1.0000 4.0000 9.0000 16.0000 25.0000 36.0000 49. 0.0100 0.0400 0.0900 0.1600 0.2500 0.3600 0. Columns 8 through 10 64.0000 81.0000 100. 0.6400 0.8100 1.

9 Loops e tomadas de decis˜ao

O que veremos nesta sec¸ ˜ao pode ser bastante ´util em diversas situac¸ ˜oes. Loops podem ser usados para criar listas, executar diversas operac¸ ˜oes de forma repetitiva, etc. Tomadas de decis˜ao podem ser utilizadas na criac¸ ˜ao de suas pr´oprias func¸ ˜oes, conforme ser´a visto mais adiante. A utilizac¸ ˜ao dessas ferramentas no MATLAB ´e bastante semelhante ao uso em linguagens de programac¸ ˜ao populares.

9.1 Loops usando for

O for pode ser usado quando se quer repetir certas operac¸ ˜oes um n´umero bem definido de vezes, atribuindo os valores de uma lista a uma vari´avel. Isto pode ser entendido mais facilmente atrav´es de um exemplo.

9.3 Tomadas de decis˜ao usando if-else

E usado de forma an´^ ´ aloga a outras linguagens de programac¸ ˜ao. N˜ao h´a muito o que explicar j´a que deve ser do conhecimento de todos. Repare que deve terminar com o comando end. Exemplo:

for m=1: for n=1: if m==n M2(m,n)=1; elseif m<n M2(m,n)=2; else M2(m,n)=0; end end end M M2 = 1 2 2 0 1 2 0 0 1 Note que se houver apenas duas possibilidades a verificar deve-se usar if-else-end , enquanto que se houver trˆes ou mais possibilidades a verificar deve-se usar if-elseif-...-elseif-else-end.

10 Plotando gr´aficos

O MATLAB e´ bastante vers´atil para criac¸ ˜ao de gr´aficos em diversos estilos (bidimensional, tridimensional, barras, polar, etc.). Vamos plotar a func¸ ˜ao co-seno com listas x e y. Para gr´aficos simples bidimensionais deve-se usar a func¸ ˜ao plot.

x=linspace(-pi/2,20,50); y=cos(x); plot(x,y)

Logo em seguida a esse comando, deve ser aberta uma nova janela gr´afica com o gr´afico da func¸ ˜ao desejada. Para se obter o gr´afico com grades para facilitar a leitura, use a func¸ ˜ao grid on. Note que o MATLAB ajusta os eixos automaticamente.

Figura 1: Exemplo de gr´afico simples da fun¸c˜ao co-seno.

Como salvar o gr´afico num formato que possa ser inserido por um editor de textos? Na janela do gr´afico, e s´´ o clicar no menu FileExport... e escolher o formato desejado. Ou, se preferir trabalhar na janela de comandos, use a func¸ ˜ao print adequadamente. Dˆe um help print. Para adicionar t´ıtulos aos eixos e ao gr´afico, siga o modelo abaixo:

xlabel(’Eixo x’) ylabel(’Eixo y’) title(’Gr´afico cos(x)’)

Figura 2: Exemplo de gr´afico simples da fun¸c˜ao co-seno com t´ıtulos.

C(i)=B(i)*A(i); end C=C’; %foi usado ’ para transformar na forma de coluna D=-B;

Podemos plotar as listas geradas em func¸ ˜ao de x com o comando plot(x,A,x,B,x,C,x,D):

Figura 4: Gr´afico com os dados criados.

O comando mais simples para salvar os valores das vari´aveis armazenadas ´e o save. Entretanto, este comando salva no formato bin´ario, num arquivo com extens˜ao mat. Como exemplo vamos salvar as vari´aveis x, A e B num arquivo chamado dados1.mat (note que ´e importante sempre utilizar a extens˜ao .mat para que os dados possam ser importados em outra ocasi˜ao). Ap´os selecionar o diret´orio onde o arquivo ser´a salvo (current directory), dˆe o comando:

save dados1 x A B

Para importar esses dados e as vari´aveis correspondentes basta usar o comando load:

load dados1.mat

Com o comando length e poss´´ ıvel determinar que a quantidade de dados de cada lista ´e 401. Para salvar todas essas 5 listas num arquivo dados2.dat de formato ascii simples podemos usar o comando dlmwrite:

dlmwrite(’dados2.dat’,[x A B C D],’\t’)

Note que as vari´aveis foram reunidas numa ´unica matriz [x A B C D] pois o comando dlmwrite ´e para exportar matrizes. ’\t’ e usado para separar os dados com um tab. Se n˜´ ao for usado ’\t’ o default ser´a a separac¸ ˜ao por uma v´ırgula. Para importar dados de um arquivo ascii ´e s´o usar o comando dlmread. Por exemplo, para importar os dados do arquivo dados2.dat rec´em criado numa matriz M ´e s´o usar o comando:

M=dlmread(’dados2.dat’)

Para atribuir as vari´aveis originais x, A, B, C, D a cada coluna:

x=M(:,1) A=M(:,2) B=M(:,3) C=M(:,4) D=M(:,5)

12 Arquivos de Roteiro - Arquivos M

O Matlab permite o uso de arquivos com extens˜ao m para elaborac¸ ˜ao de func¸ ˜oes e roteiros (scripts). Desta forma, qualquer usu´ario pode criar sua pr´opria func¸ ˜ao, ou arquivar uma seq¨uˆencia de comandos. Com isso consegue-se maior praticidade e economia de tempo em operac¸ ˜oes longas e/ou repetitivas. Os arquivos M devem ter formato txt (ascii). Qualquer editor de texto que salva em formato txt pode ser utilizado. Entretanto, o pr´oprio Matlab possui um editor de textos integrado que ´e mais conveniente por distinguir diversas operac¸ ˜oes com cores diferentes e por fazer verificac¸ ˜ao autom´atica de sintaxe de programac¸ ˜ao (por exemplo, abertura e fechamento de parˆenteses). E importante colocar a pasta onde o roteiro foi salvo na lista de caminhos ativos do Matlab para que´ ele possa ser utilizado. Caso contr´ario o Matlab responder´a com uma mensagem de erro dizendo n˜ao ter encontrado nenhum arquivo ou func¸ ˜ao com esse nome. Como exemplo, vamos considerar a ac¸ ˜ao de se importar uma s´erie de dados na forma de tabela que est˜ao armazenados em arquivos, e que se deseje plotar os gr´aficos correspondentes. Se houver v´arios arquivos e/ou v´arias colunas de dados a plotar por arquivo, ser´a mais conveniente elaborar um arquivo M do que digitar cada comando repetitivamente na janela principal do Matlab. Vamos usar o arquivo dados2.dat criado na sec¸ ˜ao anterior. O arquivo com nome roteiro1.m preparado no editor do Matlab ´e mostrado na figura 5.

Figura 5: Roteiro para importa¸c˜ao de dados do arquivo dados2.dat.

Para rodar este arquivo basta dar o comando roteiro1 na janela de comandos do Matlab (n˜ao se esquec¸a de verificar se o diret´orio em que foi salvo o arquivo roteiro1.m est´a na lista de caminhos ativos).