Matlab - Uma Introdução

42
 1 MA TLAB - UMA INTRODUÇÃO CAPÍTULO 1 - Introdução Motivação - Este curso tem por objetivo a familiarização com pacote matemático “MATLAB” e “SciLab”. Este último é agora apresentado por ser de domínio público, e  portanto, não ter custo associado à aquisição. As operações básicas são mostradas, bem como os comandos de programas, gráficos e “toolboxes”. Alguns exemplos e exercícios são mostrados. Todavia, muito embora o SciLab disponha de pacote equivalente ao “Simulink”, o mesmo não é explorado aqui, sendo mostrado apenas para “Matlab”.  1. Instalação Para a instalação do Matlab, basta seguir as instruções do CD de instalação, enquanto que o SciLab é obtido diretamente na internet. A instalação de ambos é bastante simples. CAPÍTULO 2 - Operações Básicas Os comandos a seguir são válidos para ambos os pacotes computacionais Matlab e SciLab. Quando alguma diferença ocorrer, a mesma será enfatizada. Números complexos A representação de um número complexo em MATL AB pode ser feita através de qualquer uma das formas abaixo: a = 2 + i*6 ou a = 2 + j*6 Em SciLab a representação é a mesma, muito embora a variável complexa tenha que ser definida: i ou j = sqrt(-1) As versões atuais do Matlab trabalham de forma ainda mais simplificada, permitindo escrever: a = 2 +6i

Transcript of Matlab - Uma Introdução

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 1/42

  1

MATLAB - UMA INTRODUÇÃO

CAPÍTULO 1 - Introdução

Motivação - Este curso tem por objetivo a familiarização com pacote matemático“MATLAB” e “SciLab”. Este último é agora apresentado por ser de domínio público, e portanto, não ter custo associado à aquisição. As operações básicas são mostradas, bemcomo os comandos de programas, gráficos e “toolboxes”. Alguns exemplos e exercíciossão mostrados. Todavia, muito embora o SciLab disponha de pacote equivalente ao“Simulink”, o mesmo não é explorado aqui, sendo mostrado apenas para “Matlab”.  

1. Instalação 

Para a instalação do Matlab, basta seguir as instruções do CD de instalação,enquanto que o SciLab é obtido diretamente na internet. A instalação de ambos é bastantesimples.

CAPÍTULO 2 - Operações Básicas

Os comandos a seguir são válidos para ambos os pacotes computacionais Matlab eSciLab. Quando alguma diferença ocorrer, a mesma será enfatizada.

Números complexos

A representação de um número complexo em MATLAB pode ser feita através dequalquer uma das formas abaixo:

a = 2 + i*6

ou

a = 2 + j*6

Em SciLab a representação é a mesma, muito embora a variável complexa tenhaque ser definida:

i ou j = sqrt(-1)

As versões atuais do Matlab trabalham de forma ainda mais simplificada, permitindoescrever:

a = 2 +6i

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 2/42

  2

ou

a = 2 + 6jSe for de interesse trabalhar com a parte real do número “a”, usa-se o comando:

 b = real (a)

Com resposta dada pelo programa b = 2Da mesma forma, se a parte imaginária for de interesse, usa-se:

c = imag (a)

Com resposta dada por c = 6Para o número complexo dado acima ser representado na forma polar, usa-se o

comando:

d = abs(a)

Com resposta dada por d = 6.3246, que é o mesmo que 4 36 . O ângulo defase em Matlab será dado por:

e = angle (a)

Com resposta em radianos dada por e = 1.2490, que é o mesmo que atang (6/2).Esta função também existe em Matlab e SciLab.

 Notas1. Note que para cada nova variável de interesse, foi associada uma letra qualquer. Aqui

vai a primeira diferença do pacote em relação a FORTRAN, por exemplo. Estadiferença reside no fato de não se precisar declarar variáveis nem obedecer nenhumahierarquia para tornar uma variável real ou inteira.

2. Da nota acima, segue uma importante observação relativa à representação de númeroscomplexos: As variáveis “i” e “j” podem, portanto, assumir qualquer valor. Destaforma, se “i” for especificado como 2, por exemplo, ao se escrever  

a = 2 + i*6

teremos como resposta a = 14. Logo, ao se representar números complexos, deve-se tercerteza de que “i” e “j” não estão previamente definidos. 

3. Quando escrevemos a = 2 + i*6, obtemos na telaa =

2.0 + 6.0000i

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 3/42

  3

Logo, o programa repete a informação ou processamento executado. Se isto se tornarinconveniente (muita informação na tela durante o processamento), pode se escrever

a = 2 + i*6 ;

O símbolo “;” colocado ao fim da expressão informa ao programa que não é necessárioreproduzir tal informação na tela.

Vetores

A representação clássica de vetores (ordem n x 1) é obtida da seguinte maneira:

 A = [12

3];» A = [1

23]

 A =

123

 Note que no caso acima não foi usado o símbolo “;”, e por este motivo o programa devolveu o vetor “ A”. Matlab e SciLab permitem criar diretamente um vetorcom elementos iguais a um ou zero da seguinte forma:

 A = ones(3,1)Com resposta:

 A =

111

» A = zeros(3,1)

Com resposta:

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 4/42

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 5/42

  5

3 74 55 ] 2]

Algumas operações serão mostradas:

Norma

Acha-se a norma de um vetor através do comando

w = norm ( A)

Com resposta dada por

w = 7.0711

onde w representa a norma euclidiana do vetor  A  Outros tipos de norma podem seridentificados. De maior importância, destaca-se a norma infinita, dada por

norm( A, inf) = max (abs ( A)).norm( A, -inf) = min( abs ( A)).

Pode-se também achar a norma de um vetor que seja combinação de dois outros vetores,como por exemplo:

f = norm ( A+B)

Com respostaf = 15.1658

 Note que neste caso, MATLAB computou internamente o vetor  A+B  e forneceu aresposta pedida.

Multiplicação

Sabe-se que não é possível a multiplicação de dois vetores, a menos que setransponha um deles. Entretanto, MATLAB fornece uma opção de se multiplicar, ouelevar a alguma potência, cada membro de um vetor ou uma matriz, da seguinte forma:

A multiplicação, elemento por elemento, é dada pelo símbolo “.*”. Desta forma, pode-se ter:

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 6/42

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 7/42

  7

e

k = prod ( A)

Com resposta

k = 60

2.3.2 Matrizes

Assuma as matrizes

 A = [1 3 5

6 3 88 9 2 ]

 B = [4 9 82 3 57 0 1]

Diversas operações podem então ser mostradas.

Adição, Subtração e Multiplicação

Como as matrizes têm dimensões coerentes, podem ser somadas, subtraídas oumultiplicadas entre si.

Adição e subtração são comandos bem simples, como mostrado

C = A + B Com resposta

C  = [5 12 138 6 13

15 9 3 ]

» D = A-B 

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 8/42

  8

Com resposta

 D = [-3 -6 -34 0 3

1 9 1]

A multiplicação de matrizes é obtida através do comando “*”. Note que nestecaso, tem-se uma operação diferente daquela obtida quando o símbolo “.*” é usado.Portanto:

 E = A * B 

fornece

 E  = [

45 18 2886 63 71

64 99 111]

enquanto

» F = A .*B 

fornece

 F = [4 27 4012 9 4056 0 2 ]

Norma

Obtida da mesma forma daquela mostrada para vetores

g = norm ( A)

Com resposta

g = 15.6614

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 9/42

  9

OBS: Manipulações internas são novamente válidas.

Rank

Obtido através de

h = rank ( A)

Com resposta

h = 3

Autovalores e autovetores

Em Matlab, dados pelo comando

[ u v] = eig ( A)

Com resposta

u = [-0.3767 -0.7767 -0.3571-0.6368 0.6064 -0.4574-0.6727 0.1703 0.8144]

v = [15.0000 0 0

0 -2.4384 00 0 -6.5616]

Das matrizes acima, v representa a matriz de autovalores, enquanto u representa amatriz de autovetores. A mesma resposta acima é obtia em SciLab em resposta aoseguinte comando:

[ u v] = spec ( A)

Valores singulares

Obtidos, desta vez pelo mesmo comando para os dois pacotes como:

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 10/42

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 11/42

  11

-0.3617 2.0851 0.46811.9787 -2.9362 0.8511 ]

Entretanto, para matrizes de grande porte, achar a inversa de b pode sercomputacionalmente ineficiente. Uma alternativa, entre outras, pode ser utilizada.

 P  = A/B 

Com solução idêntica a mostrada acima. Através desta operação, o resultado éobtido diretamente, sem necessidade de inversa. Tem-se, para a solução de um sistema dotipo Ax = b, tomando b como um vetor.

x = A\b é solução de Ax = bx = inv(A)*b

que fornecem a mesma resposta.. A primeira opção fatora a matriz A, enquanto que asegunda acha a resposta através da inversa explícita da matriz A.

Fatoração de matrizes

Obtida através do comando

[l, u] = lu ( A)

Obtendo como resultado as matrizes triangular inferior L e superior U

Mudando a dimensão de uma matriz

Assuma que se queira mudar a dimensão da matriz a de 3x3 para 1x9. Isto podeser feito através do comando:

Q = reshape( A,[1 9])

Obtendo:

Q = 1 6 8 3 3 9 5 8 2

Este comando não existe em SciLab.

Transposta de uma matriz

Obtido através do símbolo “’”. Assim, para se achar a transposta de a, usa-se:

Y  = A’ 

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 12/42

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 13/42

  13

t = [33]

Estas propriedades são muito importantes, uma vez que possibilitam a

manipulação de matrizes nas mais variadas formas. Pode-se também criar uma novamatriz a partir de uma já existente. Assuma que se queira criar uma matriz x a partir damatriz ª Entretanto, as linhas e colunas 2 e 3 da matriz x correspondem às linhas ecolunas 3 e 2 da matriz a . Desta forma:

x = A;

Cria uma matriz x idêntica a a . Note o símbolo “;”, indicando que a matriz x nãodeve aparecer na tela.

x([2 3],:)= A([3 2],:)

x = [1 3 58 9 26 3 8]

A operação acima trocou as segunda e terceira linhas, mas manteve as colunasidênticas às colunas da matriz A Para esta última operação, tem-se:

x(:,[2 3])= A(:,[3 2])

x = [1 5 38 8 36 2 9]

Finalmente a matriz desejada é obtida. Poderia-se também acrescentar novoselementos à matriz A, através de operações ou simples inserção de componentes:

Exemplo de inserção simples:

 A(4,2)=1

 A = [1 3 56 3 88 9 20 1 0]

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 14/42

  14

A inserção do elemento criou uma nova linha com elementos nulos, exceto ocomponente 1 relativo à posição (4, 2).

Exemplo de inserção através de operação: A (4,2) = A (1,1) + A (3,3)

 A = [1 3 56 3 88 9 20 3 0]

Desta vez um novo elemento, função de outros elementos da matriz, foiacrescentado, alterando a dimensão da matriz.

Matrizes Esparsas

MATLAB trabalha com matrizes esparsas. Uma matriz pode ser armazenada naforma esparsa, na forma (i,j)=comp, onde i e j são as colunas do elemento comp, ou podem ser transformadas em esparsas a partir de uma matriz previamente fornecida naforma densa. Cada um dos casos é mostrado abaixo:

Montando uma matriz genérica:

 A(1,1)=2;» A(2,3)=4;» A(3,2)=8;

Gerando:

 A =[2 0 00 0 40 8 0]

que é uma matriz na forma densa. Portanto, para criar uma matriz esparsa, usa-se ocomando:

 A = sparse ( A)

e a matriz acima se tornaria

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 15/42

  15

 A =

(1,1) 2(3,2) 8(2,3) 4

Onde apenas os elementos diferentes de zero aparecem. Portanto, para gerar amatriz acima na forma esparsa, usa-se os comandos:

 A = sparse( A)

a =All zero sparse: 0-by-0

» A(1,1)=2;» A(2,3)=4;

» A(3,2)=8;» A 

Obtendo:

 A =(1,1) 2(3,2) 8(2,3) 4

Matrizes Aleatórias

Para gerar matrizes aleatórias, basta dar o comando

 A = rand(3,3)

que MATLAB automaticamente cria uma matriz de valores aleatórios de dimensão 3x3. No caso deste exemplo, o programa devolveu:

 A =[0.6539 0.9103 0.04750.4160 0.7622 0.73610.7012 0.2625 0.3282]

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 16/42

  16

Exercício

Criar duas matrizes aleatórias A(4,3) e B(3,4). Achar C=A*B. Achar rank,norma, autovalores e determinante de C. Achar sua transposta. Criar um vetor aleatórioe(4,1) e resolver

C x = e

CT x = eResolver através da inversa, fatoração LU e sinais lógicos \ e /. 

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 17/42

  17

CAPÍTULO 3 - Gráficos em duas e três dimensões

Gráfico em Duas Dimensões

Assuma os dois vetores x e y relacionados entre si.

x = [1 2 3 4 5]T

y = [2 4 6 8 10]T

Quer-se representar a relação entre ambos através de um gráfico. Para isto usa-se ocomando:

 plot(x,y)

 No comando acima x e y são os vetores a serem plotados. O seguinte gráfico é obtido 

 Note entretanto que a figura está sem título, legenda no eixos x e y e anotaçõesreferentes à curva. Estes podem ser diretamente obtidos através da edição da figura,disponível em ambos os pacotes. Todavia, pode-se fazer as modificações no console,conforme mostrado a seguir:

title('gráfico exemplo para turma CESE')xlabel('eixo x')ylabel('eixo y')

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 18/42

  18

Portanto, title é o comando que dá título à curva, enquanto xlabel e ylabel definemas legendas dos eixos x e y, respectivamente. Para inserir anotação dentro do gráfico,usa-se, somente em Matlab

gtext('grafico x-y')

E o novo gráfico é mostrado:

Se ao invés da linha cheia obtida no gráfico, fosse preferível outro tipo de linha,como asteriscos, por exemplo, usaria-se:

 plot (x, y, ‘*’) 

Obtendo:

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 19/42

  19

Outros tipos e cores de linhas podem ser obtidos. Abaixo são mostrados os possíveis:

Coresy amarelor vermelhog verde

 b azulw brancom lilásc azul claro

Linha. ponto

o círculox x+ +* asterisco: dois pontos-. Ponto com traço.. tracejada

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 20/42

  20

 Note que o gráfico gerado em MATLAB foi importado por um editor de textos(word) diretamente. Para que isto ocorra é necessário que se exporteo gráfico obtidoatravés do comando print. Algumas opções são mostradas abaixo:

dps - PostScript for black and white printers

-dpsc - PostScript for color printers-

-deps - Encapsulated PostScript (EPSF)-depsc - Encapsulated Color PostScript (EPSF)

-dpcx16 - Older color PCX file format (EGA/VGA, 16-color)-dpcx256 - Newer color PCX file format (256-color)

-dbitmap - Send figure to clipboard in bitmap format

Gráfico em 3 dimensões

Assuma que em adição aos vetores x e y, tenha-se o vetor z:

z=[3 5 7 8 2]T

Para obter um gráfico que relacione x, y e z, usa-se , em Matlab, o comando:

 plot3 (x, y, z)

O equivalente em SciLab é dado por:

Plot3d (x,y,z)

Obtendo:

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 21/42

  21

 Note que das opções mostradas para o caso de duas dimensões, somente ocomando gtext não foi utilizado, uma vez que este só funciona para sistemas em duasdimensões.

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 22/42

  22

CAPÍTULO 4 - Comandos de arquivos

Introdução

Todos os comandos mostrados nas seções anteriores foram desenvolvidos na teladentro do ambiente MATLAB e SciLab. É possível, entretanto, chamar um arquivo previamente desenvolvido que contenha informações ou comandos para serem inseridosno ambiente MATLAB e Scilab. Tais arquivos podem ter qualquer nome, desde quetenham extensão “m”, par a MATLAB e “sce” para SciLab. Assim, em MATLAB, para secarregar tal arquivo, basta digitar seu nome, não sendo necessário digitar a extensão “m”,automaticamente assumida pelo programa. Por exemplo, assuma que a matriz a mostradaanteriormente esteja armazenada em um programa chamado “caso1.m”. Assuma tambémque o símbolo “;” não seja colocado ao fim da matriz. Portanto, uma vez dentro doambiente MATLAB, basta digitar caso1, e a matriz  A  aparecerá na tela. Em SciLab, oarquivo é executado através da bara de ferramentas, que tem a opção de executar o

 programa de extensão “sce”. Caso o símbolo “;” seja colocado ao fim da matriz, apósdigitar caso1, a matriz A não será mostrada, muito embora esteja armazenada. De forma achecar as variáveis armazenadas, usa-se o comando “who”. O exemplo abaixo ilustra ouso deste comando após a matriz a ter sido armazenada.

Digita-se whoObtendo a resposta:

Your variables are:

 A 

Uma vez carregada a matriz, qualquer das funções mostradas previamente podeser utilizada. Note também que uma vez que o arquivo de extensão “m” pode contercomandos do programa, o operador pode criar um arquivo “.m” que funcione como um programa . O exemplo abaixo ilustra o arquivo caso1.m contendo a matriz  A  e oscomandos que pedem seu determinante, autovalores, norma e rank. Note que o símbolo“;” é colocado ao fim de cada comando.

 A = [1 2 34 5 6

7 8 9] ;% os comandos estão abaixodet1=det( A) ;aut=eig( A) ;

norm1=norm( A) ;rank1=rank( A) ;

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 23/42

  23

O símbolo “%” utilizado no arquivo representa comentários, e não sãoconsiderados pelo programa. Em “SciLab” os comentários são dados pelo comando //. Aexclusão deste símbolo antes da sentença “os comandos estão abaixo” produziria umamensagem de erro. Digitando caso1 na tela, esta permanecerá limpa após a execução do programa, uma vez que o símbolo “;” foi utilizado. 

» caso1

O comando “who” indica as variáveis processadas: 

» who

Your variables are:

 A  aut det1 norm1 rank1Portanto, todas as variáveis estão reconhecidas pelo programa. Para saber o valor

destas variáveis, basta digitar a variável de interesse. Por exemplo, para saber a norma dea, digita-se

» norm1

que é a variável associada a norma no programa caso1.m. A resposta do programa é dada por

norm1 =

16.8481

Qualquer outra variável pode ser obtida desta forma. Uma outra possibilidaderefere-se ao armazenamento dos resultados obtidos. Para este fim o comando “diary” pode ser utilizado.

Armazenando resultados

Assuma que as operações executadas acima devam ser armazenadas em um outroarquivo. Para isso, abre-se um arquivo usando o comando “diary nome”, onde “nome” éum nome qualquer escolhido. Anota-se as variáveis de interesse, e quando o processo seencerrar, fecha-se o arquivo com o comando “diary off”. O exemplo abaixo é feito a partir do arquivo caso1.m.

caso1» diary resul

» aut

aut =

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 24/42

  24

16.1168-1.11680.0000

» det1

det1 =0

» norm1

norm1 =16.8481

» rank1rank1 =

2

» diary off

O arquivo resul fornece

caso1» diary resul

» aut

aut =

16.1168-1.11680.0000

» det1

det1 =

0

» norm1

norm1 =

16.8481

» rank1

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 25/42

  25

rank1 =2

» diary off

Idêntico, portanto, aos comandos dados na tela.

Comando clear

Foi mostrado que o comando “who” mostra as variáveis armazenadas pelo programa. Pode ser de interesse do operador, por uma razão qualquer, excluir umavariável durante o processamento. Para isso usa-se o comando “clear”, que pode serutilizado para limpar quantas variáveis se queira. Voltando ao exemplo do arquivocaso1.m, tem-se as variáveis:

Your variables are:

a aut det1 norm1 rank1

Assuma que seja de interesse excluir a variável aut. Executa-se o comando

clear aut

Digitando o comando “who” novamente fornece 

Your variables are:

a det1 norm1 rank1

E a variável não está mais armazenada. Se todas as variáveis devem ser excluídas,usa-se o comando

clear

Digitando “who” mais uma vez, obtém-se:

Your variables are:

Indicando que nenhuma variável encontra-se armazenada. O conjunto decomandos mostrados até então, permite que se programe em MATLAB. Para isto, faz-seuso dos comandos mostrados na próxima seção.

Comando size

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 26/42

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 27/42

  27

CAPÍTULO 5 - Comandos de Programa

Introdução

Um programa para ser executado em MATLAB precisa ser montado em umarquivo de extensão “m”. A exemplo de outras linguagens de programação, existemalguns comandos lógicos inerentes ao programa, além das funções definidasanteriormente. Por outro lado, o programa não requer declaração nem dimensionamentodas variáveis. A seguir, algumas funções são mostradas.

For

Comando utilizado para gerar um loop. Semelhante ao DO utilizado em

FORTRAN. O processo se repete até que o limite superior (ou inferior) seja atingido.Exemplo:

» for ti=1:10 j(ti)=2*ti;

end» tj

tj =

2 4 6 8 10 12 14 16 18 20

 No exemplo acima, tï” varia de 1 a 10 com passo 1. Para cada valor de ti, umavariável tj é criada. Passos diferentes de 1 também podem ser considerados, comomostrado abaixo:

k=1;» for ti=1:2:11

tj(k)=ti;k=k+1;

end» tj1 3 5 7 9 11

 No exemplo acima, ti varia de 1 a 11 com passo de 2. A variável tj é criada dentrodo loop com índice k atualizado a cada atualização de ti. O exemplo acima serve paranúmeros negativos também. Por exemplo,

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 28/42

  28

for t1=1:-0.1:0

varia ti de 1 a 0 com passo de -0.1.

If-Then-Else

Comando lógico condicional. Se uma determinada condição for satisfeita,executa-se algo, caso contrário, executa-se outra instrução, ou nenhuma. Exemplo:

for ti=1:10if ti <= 5tj(ti)=ti;

elsetj(ti)=-ti;

endend

» tj

tj =

1 2 3 4 5 -6 -7 -8 -9 -10

 No exemplo acima, ti varia de 1 a 10. É dada então a seguinte instrução: Se ti formenor ou igual a 5, a variável j assume valor igual a ti. Caso contrário (maior que 5) jassume o valor negativo de ti. A inserção do símbolo “<=” estimula o usuário a conheceros comandos lógicos disponíveis. Uma lista é dada abaixo:

<= Menor ou igual>= Maior ou igual< Menor> Maior== Igual~= Diferente

Com os comandos acima, qualquer instrução pode ser dada dentro do comando IF. Note que o comando if foi dado dentro do comando FOR, o que já estrutura a formaçãode um programa.

BREAK  

Utilizado para encerrar uma execução, desde que alguma exigência seja satisfeita.Exemplo:

for ti=1:10if ti == 7

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 29/42

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 30/42

  30

max( A)

ans =3

» min( A)

ans =-9

Portanto, as funções max e min consideram o valor real de uma variável. Se ovalor máximo ou mínimo for desejado em módulo, obtem-se:

max(abs( A))

ans =9

» min(abs( A))

ans =3

 Neste caso, a consideração é modular, e o valor -9, considerado mínimo no primeiro caso, torna-se máximo no segundo.

Sort

Assuma o mesmo vetor a considerado acima. Se for do interesse do usuárioordenar o vetor a de forma crescente, usa-se o comando

 b = sort ( A)

Obtendo como resposta:

 b =

-9-43

Uma vez mais, se os valores em módulo são desejados, usa-se:

c = sort ( abs ( A))

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 31/42

  31

Obtendo:

c =

349

Uma terceira alternativa refere-se à possibilidade de escalonamento em ordemmodular decrescente. Para isso, usa-se:

d = sort(-abs ( A))

Obtendo:

d =

-9-4-3

 Note neste caso que os valores de d são negativos, mas isto é irrelevante se o valormodular for de interesse.

Find

Utilizado para encontrar uma variável de interesse dentro de um conjunto dedados. A resposta é a posição da variável dentro do conjunto de dados. Por exemplo

e = find( A == -9)

Com resposta:

e =2

fprintf

Utilizado para fornecer alguma informação relevante na tela. Esta informação pode vir associada a um comentário.

fprintf('Representando %g%% do sistema\n\n',nfgh);

A frase 'Representando %g%% do sistema\n\n' é o comentário,enquanto nfgh é a informação. 

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 32/42

  32

Input

Utilizada para fornecer um dado a ser utilizado pelo programa. Neste caso, ainformação é digitada pelo usuário na tela.

dc=input('forneça o valor desejado = > ')

E o valor digitado na tela será automaticamente considerado igual a dc.

pause

Utilizado para parar provisoriamente o processamento. Após digitar enternovamente, o programa volta a ser executado.

Save

Utilizado para salvar em formato binário algumas variáveis de interesse.

Save arq X

Salva no arquivo arq.mat a variável X. Para carregar a variável X, basta digitarload arq, e automaticamente esta varável estará na área de trabalho.

Exercício

1- Criar uma matriz aleatória de dimensão 8x8 em um arquivo de extensão “m”.

Achar norma, rank, autivalores e determinante desta matriz. Multiplica a matriz de 1 a 10.Calcule todos ítens acima para cada fator e plote tudo em função do fator. 

2- 

Automatizar exercícios do capítulo anterior.

3- Resolver a equação f(x)=x2 +2x + 1 por Newton Raphson.

Código:x=0;

erro=10;

while (erro>0.001)dy=2*x+2;

delta=-(1/dy)*erro;

x=x+delta;

erro=x^2+2*x+1;end

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 33/42

  33

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 34/42

  34

Capítulo 6 - . Simulink

Introdução

Simulink é uma opção em MATLAB para simulação de sistemas dinâmicos. Estessistemas poderiam ser implementados computacionalmente em MATLAB, mas podemser resolvidos de forma mais simples através desta opção. A seguir, será mostrado comomontar um diagrama de blocos em um arquivo de extensão “m”. Dentro do ambienteMATLAB, digite “simulink”. A seguinte tela será obtida: 

Linear Connections

SIMULINK Block Library (Version 1.3c)

ExtrasSources   Discrete NonlinearSinks

 

Cada um dos ítens acima constitui diversas opções de bloco. Por exemplo,clicando duas vezes sobre o símbolo sources, obtem-se:

Signal Source Library

RandomNumber

Chirp Signal

RepeatingSequence

Band-LimitedWhite Noise

SignalGenerator

1

Constant

Sine Wave Step Input

untitled.matFrom Fil e

[T,U]

FromWorkspace

12:34

Digital ClockClock

PulseGenerator

 

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 35/42

  35

Clicando sobre “linear”, obteria-se:

Linear Library

.

InnerProduct

++

Sum

1/s

Integrator

du/dt

Derivative

1

s+1

Transfer Fcn

(s-1)

s(s+1)

Zero-Pole

1

Gain

K

MatrixGain

1.317

SliderGain

x' = Ax+Bu y = Cx+Du

State-Space  

Obtendo, portanto, diversos possíveis componentes.

Montagem de um arquivo de blocos

Para se criar um arquivo de extensão “m”, clica-se em “file” no menu disponível da caixa“simulink”, escolhendo a opção “new”. Portanto, passa-se a ter duas janelas, uma com asopções “simulink”, e outra referente ao arquivo de extensão “m”. Para  criar umdiagrama de blocos neste arquivo, pressiona-se o botão esquerdo do “mouse” sobre oelemento de interesse e arrasta-se para a janela do arquivo “m”. O exemplo abaixo mostraquando a caixa geradora de onda senoidal é arrastada para a janela do arquivo de extensão“m”. Esta operação copia esta caixa na janela, i.e., a operação original continuadisponível na janela “simulink”. 

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 36/42

  36

Signal Source Library

RandomNumber

Chirp Signal

RepeatingSequence

Band-LimitedWhite Noise

SignalGenerator

1Constant

Sine Wave Step Input

untitled.mat

From Fil e

[T,U]

FromWorkspace

12:34

Digital ClockClock

PulseGenerator

 Obtendo na janela

Sine Wave

 

Um sinal integrador deve ser adicionado. Clicando sobre a opção linear, obtêm-setal comando. Arrastando para a janela do arquivo de extensão “m”, obtem-se:

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 37/42

  37

Sine Wave1/s

Integrator

 

A conexão entre ambos é feita clicando o botão esquerdo do mouse sobre a seta

do sinal de onda senoidal, arrastando esta em seguida até o integrador, obtendo:

Sine Wave

1/s

Integrator

 

Desta forma, um simples diagrama de bloco foi montado. Assuma então que os parâmetros da sinal de onda senoidal devam ser ajustados. Neste caso, basta clicar duasvezes o botão esquerdo sobre este bloco no arquivo de extensão “m”. Um quadro arespeito deste operador aparecerá, onde amplitude, frequência e ângulo podem serajustados. Tal operação é possível para qualquer operador. Este arquivo, se pronto, deveser salvo. Tal comando é feito através do menu “file” disponível na barra do arquivo onde

o diagrama de blocos foi gerado. Note que este arquivo deve ter extensão “m”.Assuma que uma vez que este arquivo esteja gravado, deseja sair do programa.

Basta fechar o arquivo através do menu “file” e dar o comando “quit” no prompt doMATLAB. Para carregar o arquivo novamente, uma vez estando dentro do MATLAB, basta digitar “simulink”, clicar sobre a opção “file”, “open” e clicar sobre o nome doarquivo. Se por exemplo, for de interesse do operador inserir um bloco de somatório nasaída, procede-se da seguinte forma:

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 38/42

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 39/42

  39

++

SumSine Wave1/s

Integrator

 

E o novo diagrama está pronto. Deve-se salvar o novo arquivo e proceder com asimulação.

Simulando um arquivo de extensão “m 

Üma vez criado o arquivo de extensão “m”, deve-se escolher que método deintegração utilizar. Simulink oferece as seguintes possibilidades:

linsim Método que subtrai as equações dinâmicasrk23 Runge-Kutta de terceira ordemrk45 Runge-Kutta de quinta ordemgear Método previsor-corretor de Gear para sistemas stiff.adams Método previsor-corretor de Adams

euler Método de Eulerlinsim é usado para modelos de sistemas lineares.Rk23 e rk45 são utilizados para sistemas altamente não lineares.Gear é usado quando o sistema é não linear, mas bem comportado. Não funciona bem para perturbações bruscas na entrada ou quando há singularidade.Adams é usado quando o sistema é não linear e bem comportado, mas com poucasconstantes de tempo variáveis.Euler é usado somente para testar resultados.

Comando de Execução

Asumindo que o linsim seja escolhido (todos os outros têm procedimentoidêntico), digita-se:

[a b]=linsim(“file”,tmax,xo,options) 

onde

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 40/42

  40

a,b são os vetores de saídafile é o arquivo de extensão “m” onde o diagrama de blocos está contido. Tmax é o tempo máximo de processamento.xo é o vetor de condições iniciaisoptions contém a tolerância, passo máximo e mínimo.

Um gráfico que mostre o comportamento de a em função de b pode ser obtidocomo mostrado anteriormente na seção de gráficos. O exemplo abaixo mostra asimulação do diagrama de blocos genérico mostrado no arquivo sim1.m :

1

Gain

2

s+1

Transfer Fcn

++

SumSignalGenerator

 

O sinal gerador é de uma onda senoidal de amplitude 1. O seguinte comando édado para executar a simulação:

options=[0.001,0.00001,10];

[tl,xl]=linsim('sim1',10,1,options);

Com o comando de gráfico

 plot(tl,xl,’w’) 

Obtendo o seguinte gráfico:

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 41/42

  41

Se uma das variáveis for alterada, por exemplo, a função de transferência tiver onumerador igual a 2, obtêm-se:

Portanto, qualquer mudança pode ser feita para se testar o efeito nas variáveis deestado.

7/25/2019 Matlab - Uma Introdução

http://slidepdf.com/reader/full/matlab-uma-introducao 42/42

Exercício

Simular o sistema abaixo, ondeR=2, L=1

Incluir um capacitor de C=1 em série e simular novamente. Simular utilizando função de

transferência (bloco “transfer function”) e por variáveis de estado (bloco “state space”)