• Nenhum resultado encontrado

Matlab - Apostila [FEI]

N/A
N/A
Protected

Academic year: 2021

Share "Matlab - Apostila [FEI]"

Copied!
94
0
0

Texto

(1)

 Matlab

 Matlab

&

&

Simulink

Simulink

(2)

1. Tutorial

1. Tutorial do Matlab do Matlab & Simulink& Simulink... 22 1.1

1.1 Matlab Matlab Básico...Básico... 22 1.1.1

1.1.1 Introdução...Introdução... 33 1.1.2

1.1.2 Operações Operações Matriciais...Matriciais... 88 1.1.3 Operações em

1.1.3 Operações em Array Array... 1010

1.1.4 Manipulação Matricial e Vetori

1.1.4 Manipulação Matricial e Vetorialal ... 1313 1.1.5

1.1.5 Análise Análise de de Dados...Dados... 1818 1.1.6 Funções

1.1.6 Funções MatriciaisMatriciais ... 2020 1.1.7 Polinômios e Processamento de S

1.1.7 Polinômios e Processamento de Sinaisinais ... 2020 1.1.8 Funções de Funções

1.1.8 Funções de Funções ... 2323 1.1.9

1.1.9 GráficosGráficos ... 2727 1.1.10 Controles

1.1.10 Controles de Fluxode Fluxo ... 3737 1.1.11 Arquivos

1.1.11 Arquivos MM ... 3939 1.1.12

1.1.12 Arquivos Arquivos de de DiscoDisco... 4646 1.1.13 O Depurador do Matlab

1.1.13 O Depurador do Matlab ... 4848 1.2

1.2 Toolboxes Toolboxes do do Matlab...Matlab... 4949 1.2.1

1.2.1 Sistemas Sistemas de de ControleControle... 5050 1.2.2

1.2.2 Outros Outros ToolboxesToolboxes ... 5454 1.3

1.3 Simulink Simulink BásicoBásico ... 5555 1.3.1

1.3.1 Linhas Linhas Gerais...Gerais... 5555 1.3.2 Cons

1.3.2 Construção trução de de Modelos...Modelos... 5656 1.3.3 Análise

1.3.3 Análise dos dos ModelosModelos ... 6969 1.3.4 Como o Simulink Funciona

1.3.4 Como o Simulink Funciona ... 8080 1.3.5

1.3.5 S-FunctionsS-Functions ... 8080 1.3.6 Mascarando

1.3.6 Mascarando BlocosBlocos ... 8484 1.3.7 Adicionando um novo bloco

1.3.7 Adicionando um novo bloco ... 8787

2.

(3)

 Matlab & Simulink

 Matlab & Simulink

1.1

1.1 Matlab Básico

Matlab Básico

MATLAB é um ambiente de computação técnica de visualização e MATLAB é um ambiente de computação técnica de visualização e processamento numérico de alto desempenho. Ele integra análise numérica, processamento numérico de alto desempenho. Ele integra análise numérica, cálculo matricial, processamento de sinais, vários aplicativos e gráficos num cálculo matricial, processamento de sinais, vários aplicativos e gráficos num ambiente amigável onde problemas e soluções são expressos como eles são ambiente amigável onde problemas e soluções são expressos como eles são representados matematicamente sem a necessidade da programação tradicional. representados matematicamente sem a necessidade da programação tradicional.

O nome MATLAB é acrônimo de laboratório de matemática. Ele foi O nome MATLAB é acrônimo de laboratório de matemática. Ele foi originalmente

originalmente escrito para permiescrito para permitir um tir um acesso fácil acesso fácil aos programas aos programas de cálculode cálculo matricial desenvolvidos pelos projetos LINSPACK e EISPACK, que juntos matricial desenvolvidos pelos projetos LINSPACK e EISPACK, que juntos representam o estado da

representam o estado da arte em programas arte em programas de cálculo made cálculo matricial.tricial.

MATLAB também contempla uma família de aplicativos específicos MATLAB também contempla uma família de aplicativos específicos chamados

chamados “toolboxes”“toolboxes”. Esses aplicativos foram desenvolvidos por profissionais. Esses aplicativos foram desenvolvidos por profissionais

de expressão em cada uma das áreas e foram totalmente concebidos na forma de de expressão em cada uma das áreas e foram totalmente concebidos na forma de coleções de funções MATLAB (M-files), estendendo o ambiente MATLAB na coleções de funções MATLAB (M-files), estendendo o ambiente MATLAB na solução de problemas particulares. Entre outros, temos os seguintes

solução de problemas particulares. Entre outros, temos os seguintes toolboxestoolboxes::

Processamento de Sinais; Projeto de Sistemas de Controle; Simulação de Processamento de Sinais; Projeto de Sistemas de Controle; Simulação de Sistemas Dinâmicos; Identificação de Sistemas; Redes Neurais; Splines; Sistemas Dinâmicos; Identificação de Sistemas; Redes Neurais; Splines; Otimização ; Análise e Síntese

Otimização ; Análise e Síntese µ µ , etc., etc.

Provavelmente a característica mais importante do MATLAB é sua Provavelmente a característica mais importante do MATLAB é sua ampliabilidade. Isto permite que qualquer um possa ser um autor de um

ampliabilidade. Isto permite que qualquer um possa ser um autor de um toolboxtoolbox ..

Aplicativos matemáticos complexos são facilmente desenvolvidos em poucas Aplicativos matemáticos complexos são facilmente desenvolvidos em poucas linhas no ambiente MATLAB sem a necessidade de programação de uma única linhas no ambiente MATLAB sem a necessidade de programação de uma única linha de código C, FORTRAM ou outro código de baixo nível.

(4)

1.1.1

1.1.1 IntroduçãoIntrodução

O MATLAB trabalha essencialmente com um tipo de objeto: Matriz O MATLAB trabalha essencialmente com um tipo de objeto: Matriz retangular numérica (real ou complexa). Em algumas situações existe retangular numérica (real ou complexa). Em algumas situações existe significado especial agregado à matrizes de dimensão 1 (escalares) e matrizes significado especial agregado à matrizes de dimensão 1 (escalares) e matrizes com uma só linha ou coluna (vetores). A linguagem MATLAB não usa com uma só linha ou coluna (vetores). A linguagem MATLAB não usa declaração preliminar ou dimensionamento de variáveis. Isso é feito de forma declaração preliminar ou dimensionamento de variáveis. Isso é feito de forma automática.

automática.

Matrizes podem ser adicionadas no ambiente de várias formas, contudo a Matrizes podem ser adicionadas no ambiente de várias formas, contudo a forma mais simples para matrizes pequenas é entrando com a lista dos forma mais simples para matrizes pequenas é entrando com a lista dos elementos, seguindo a seguinte convenção:

elementos, seguindo a seguinte convenção:

•• Separe os elementos com espaços ou vírgulas.Separe os elementos com espaços ou vírgulas. •• Delimite os elementos com colchetesDelimite os elementos com colchetes [][]..

•• UseUse

 ;

 ;

(ponto-e-vírgula) para indicar o final da linha.(ponto-e-vírgula) para indicar o final da linha. Exemplo: Exemplo: »» A = [1 2 3; 4 5 6; 7 8 9]A = [1 2 3; 4 5 6; 7 8 9] Resulta: Resulta: A = A = 1 1 2 2 33 4 4 5 5 66 7 7 8 8 99

Elementos de uma matriz podem ser quaisquer expressões MATLAB. Por Elementos de uma matriz podem ser quaisquer expressões MATLAB. Por exemplo: exemplo: »» x x = = [-1.3 [-1.3 sqrt(3) sqrt(3) (1+2+3)*4/5](1+2+3)*4/5] Resulta: Resulta: x = x = -1.3000 -1.3000 1.7321 1.7321 4.80004.8000

Elementos individuais podem ser referenciados pelo seu índice

Elementos individuais podem ser referenciados pelo seu índice (linha,coluna):(linha,coluna):

assim. para acrescentar elementos ao exemplo anterior assim. para acrescentar elementos ao exemplo anterior

(5)

»» x(5) = abs(x(1))x(5) = abs(x(1)) Resulta: Resulta: x = x = -1.3000 -1.3000 1.7321 1.7321 4.8000 4.8000 0 0 1.30001.3000

Ao atribuir um valor numérico à

Ao atribuir um valor numérico à x(5), x(5), automaticamenteautomaticamente x(4) x(4) é criado com valoré criado com valor

nulo. Você pode construir matrizes maiores usando matrizes menores como seus nulo. Você pode construir matrizes maiores usando matrizes menores como seus elementos. Por exemplo, vamos adicionar uma linha a matriz

elementos. Por exemplo, vamos adicionar uma linha a matriz A A::

»» r = [10 11 12];r = [10 11 12];

»» A = [A; r]A = [A; r]

Isto resulta em: Isto resulta em:

A = A = 1 1 2 2 33 4 4 5 5 66 7 7 8 8 99 10 10 11 11 1212

Você pode extrair sub-matrizes de uma matriz maior usando

Você pode extrair sub-matrizes de uma matriz maior usando

::

(dois pontos). Por(dois pontos). Por exemplo:

exemplo:

»» A = A(1:3,:);A = A(1:3,:);

Remove as três primeiras linhas e todas as colunas da matriz atual

Remove as três primeiras linhas e todas as colunas da matriz atual A A e coloca oe coloca o

resultado em resultado em A A..

A = A = 1 1 2 2 33 4 4 5 5 66 7 7 8 8 99

Variáveis e Declarações do MATLAB Variáveis e Declarações do MATLAB

(6)

Declarações no MATLAB são freqüentemente feitas da

Declarações no MATLAB são freqüentemente feitas da seguinte forma:seguinte forma:

»» variável = expressãovariável = expressão

ou simplesmente, ou simplesmente,

»» expressãoexpressão

Quando o nome da variável é omitido, o nome

Quando o nome da variável é omitido, o nome ansans é usado como variávelé usado como variável

default  default ..

Uma definição normalmente termina com

Uma definição normalmente termina com ENTERENTER. Contudo, se o último. Contudo, se o último

caracter é um ponto-e-vírgula, ele suprime a apresentação no vídeo, embora faça caracter é um ponto-e-vírgula, ele suprime a apresentação no vídeo, embora faça a atribuição do mesmo jeito. Isto é especialmente importante nas situações que o a atribuição do mesmo jeito. Isto é especialmente importante nas situações que o resultado é muito grande, tal como uma

resultado é muito grande, tal como uma matriz de 10 linhas e 10 matriz de 10 linhas e 10 colunas.colunas.

Se a expressão é muito grande e não cabe em uma linha, use

Se a expressão é muito grande e não cabe em uma linha, use (...)(...) parapara

continuar a definição na linha

continuar a definição na linha seguinte. Exemplo:seguinte. Exemplo:

»» s = 1 - 1/2 + 1/3 - 1/4 + 1/5 -1/6 + 1/7 ...s = 1 - 1/2 + 1/3 - 1/4 + 1/5 -1/6 + 1/7 ... - 1/8 + 1/9 - 1/10 + 1/11 - 1/12;

- 1/8 + 1/9 - 1/10 + 1/11 - 1/12;

Você pode formar uma variável ou nome de função com uma letra seguida Você pode formar uma variável ou nome de função com uma letra seguida de qualquer quantidade de letras (ou

de qualquer quantidade de letras (ou underscoreunderscore) . MATLAB diferencia letras) . MATLAB diferencia letras

maiúsculas de minúsculas e usa somente os primeiros 19 caracteres do nome. maiúsculas de minúsculas e usa somente os primeiros 19 caracteres do nome.

Obtendo Informação da Área de Trabalho (

Obtendo Informação da Área de Trabalho (workspace workspace ))

Para listar as variáveis ativas use o comando

Para listar as variáveis ativas use o comando

who

who

. Para obter mais. Para obter mais informações sobre as variáveis como: nome, tamanho, número de elementos, informações sobre as variáveis como: nome, tamanho, número de elementos, etc., use o comando

etc., use o comando

whos

whos

..

O Utilitário de

(7)

O comando

O comando

 help

 help

produz informaçãoproduz informação on-lineon-line da maioria dos tópicos doda maioria dos tópicos do

MATLAB, mostrando uma lista dos diretórios que contém arquivos do MATLAB, mostrando uma lista dos diretórios que contém arquivos do MATLAB. Para listar as funções de um diretório particular, digite

MATLAB. Para listar as funções de um diretório particular, digite

 help

 help

seguidoseguido do nome do diretório. Exemplo:

do nome do diretório. Exemplo:

»» help matfunhelp matfun

Para obter auxílio sobre uma função específica digite

Para obter auxílio sobre uma função específica digite

 help

 help

e o nome dae o nome da função. Exemplo:

função. Exemplo:

»» help invhelp inv

Para localizar palavras-chaves em todos os arquivos do MATLAB, use o Para localizar palavras-chaves em todos os arquivos do MATLAB, use o comando

comando

lookfor

lookfor

. Exemplo:. Exemplo:

»» lookfor inverselookfor inverse

»»

INVHILB

INVHILB Inverse Inverse Hilbert Hilbert matrixmatrix ACOS

ACOS Inverse Inverse cosinecosine ACOSH

ACOSH Inverse Inverse hyperbolic hyperbolic cosinecosine ACOT

ACOT Inverse Inverse cotangentcotangent ACOTH

ACOTH Inverse Inverse hyperbolic hyperbolic cotangentcotangent ACSC

ACSC Inverse Inverse cosecantcosecant ACSCH

ACSCH Inverse Inverse hyperbolic hyperbolic cosecantcosecant

 

Salvando e Saindo Salvando e Saindo

Para sair do MATLAB digite

Para sair do MATLAB digite

exit

exit

. Encerrando uma seção do MATLAB,. Encerrando uma seção do MATLAB, apaga-se todas as variáveis da área de trabalho (

apaga-se todas as variáveis da área de trabalho (workspaceworkspace). Se for necessário,). Se for necessário,

salve suas variáveis digitando

salve suas variáveis digitando

 save

 save

. Este comando salvará todas as variáveis em. Este comando salvará todas as variáveis em um arquivo chamado

um arquivo chamado matlab.matmatlab.mat. Para recuperar as variáveis use o comando. Para recuperar as variáveis use o comando

load 

load 

. Você também pode salvar somente algumas variáveis e usar o nome de. Você também pode salvar somente algumas variáveis e usar o nome de um arquivo qualquer. O exemplo a seguir salva as variáveis

um arquivo qualquer. O exemplo a seguir salva as variáveis x x,, y y ee z z no arquivono arquivo

temp.mat temp.mat..

(8)

Números e Expressões Aritméticas Números e Expressões Aritméticas

O MATLAB usa notação convencional com potência de dez ou unidade O MATLAB usa notação convencional com potência de dez ou unidade complexa como sufixo:

complexa como sufixo:

-4.534i -4.534i

1.760217e-11 1.760217e-11

O MATLAB usa 16 dígitos significativos e expressões aritméticas são O MATLAB usa 16 dígitos significativos e expressões aritméticas são calculadas com a seguinte prioridade

calculadas com a seguinte prioridade

^ potenciação

^ potenciação

  \

  \ divisão divisão à à esquerdaesquerda   /

  / divisão divisão à à direitadireita

* multiplicação * multiplicação - subtração - subtração + adição + adição

Algumas funções internas retornam valores especiais. A função

Algumas funções internas retornam valores especiais. A função

 pi

 pi

retornaretorna o valor de

o valor de ππ, a função, a função

inf 

inf 

retornaretorna ∞∞, etc. O MATLAB dispões das funções, etc. O MATLAB dispões das funções matemáticas elementares normalmente encontradas em calculadores científicas. matemáticas elementares normalmente encontradas em calculadores científicas. Essas funções incluem por exemplo:

Essas funções incluem por exemplo:

 abs

 abs

,,

 sqrt

 sqrt

,,

log

log

,,

 sin

 sin

. Se uma operação. Se uma operação resultar em infinito isso não implica em erro, simplesmente aquela variável terá resultar em infinito isso não implica em erro, simplesmente aquela variável terá o valor infinito. O mesmo ocorre para operações inválidas como

o valor infinito. O mesmo ocorre para operações inválidas como ∞∞ /  / ∞∞ ou 0/0. Oou 0/0. O resultado é

resultado é NaNNaN (( Not a Number  Not a Number ).).

Formato de Saída Formato de Saída

Para alterar a formatação do número a ser apresentado na tela, utilize o Para alterar a formatação do número a ser apresentado na tela, utilize o comando

comando

 format

 format

. Exemplos:. Exemplos:

»» x = [4/3 1.2345e-6]x = [4/3 1.2345e-6]

»» format shortformat short

1.3333 0.0000 1.3333 0.0000

(9)

Funções Funções

Grande parte do poder do MATLAB vem do enorme conjunto de funções. Grande parte do poder do MATLAB vem do enorme conjunto de funções. Algumas das funções são internas ao processador MATLAB e outras são Algumas das funções são internas ao processador MATLAB e outras são disponíveis como bibliotecas externas na forma de M-files. O conjunto de disponíveis como bibliotecas externas na forma de M-files. O conjunto de funções aplicadas a uma área específica são denominadas

funções aplicadas a uma área específica são denominadas toolboxestoolboxes. Cada. Cada

usuário pode criar suas próprias funções que se comportam como se fossem usuário pode criar suas próprias funções que se comportam como se fossem funções internas. As seções adiante discutem cada uma das diferentes categorias funções internas. As seções adiante discutem cada uma das diferentes categorias de funções analíticas do MATLAB básico.

de funções analíticas do MATLAB básico.

É possível combinar funções de várias formas. Exemplo: É possível combinar funções de várias formas. Exemplo:

»» x = sqrt(log(z))x = sqrt(log(z))

Algumas funções usam dois ou mais argumentos, e cada argumento pode Algumas funções usam dois ou mais argumentos, e cada argumento pode ser uma expressão. Exemplo:

ser uma expressão. Exemplo:

»» angulo = atan2(y,3*x)angulo = atan2(y,3*x)

Existem funções que retornam dois ou mais valores. Nestes casos, os Existem funções que retornam dois ou mais valores. Nestes casos, os valores de saída devem estar entre colchetes

valores de saída devem estar entre colchetes [][] e separados por vírgula. Exemplo:e separados por vírgula. Exemplo:

»» [V,D] = eig(A)[V,D] = eig(A)

A função

A função

eig

eig

calcula os autovetores e os autovalores decalcula os autovetores e os autovalores de  A A,,

respectivamente. Havendo dúvida, deve-se usar

respectivamente. Havendo dúvida, deve-se usar help eighelp eig..

1.1.2

1.1.2 Operações MatriciaisOperações Matriciais

Transposta de uma Matriz Transposta de uma Matriz

O caracter ' (apóstrofe) denota transposta de uma matriz. Se

O caracter ' (apóstrofe) denota transposta de uma matriz. Se  z z forfor

complexo,

complexo, z z' é o transposto conjugado complexo de' é o transposto conjugado complexo de z z. Exemplo:. Exemplo:

(10)

A = A = 1 1 22 3 3 44 »» B = A'B = A' B = B = 1 1 33 2 2 44

Adicionando e Subtraindo Matrizes Adicionando e Subtraindo Matrizes

Os símbolos

Os símbolos ++ ee -- denotam adição e subtração de matrizes. A operação édenotam adição e subtração de matrizes. A operação é

definida sempre que as matrizes tenham a

definida sempre que as matrizes tenham a mesma dimensão. Exemplo:mesma dimensão. Exemplo:

»» C = A + BC = A + B C = C = 2 2 55 5 5 88

A adição e subtração também é definida quando um dos operandos for um A adição e subtração também é definida quando um dos operandos for um escalar. Exemplo: escalar. Exemplo: »» D = C - 2D = C - 2 D = D = 0 0 33 3 3 66 Multiplicação de Matrizes Multiplicação de Matrizes O símbolo

O símbolo ** denota multiplicação de matrizes e é válida sempre quedenota multiplicação de matrizes e é válida sempre que

dimensões internas dos dois operandos for igual. Exemplo: dimensões internas dos dois operandos for igual. Exemplo:

»» E = A * BE = A * B E = E = 5 5 1111 11 25 11 25

Naturalmente, um escalar (matriz de dimensão 1) pode multiplicar ou ser Naturalmente, um escalar (matriz de dimensão 1) pode multiplicar ou ser multiplicado por qualquer matriz. Exemplo:

(11)

F = F = 10 22 10 22 22 50 22 50 Divisão de Matrizes Divisão de Matrizes

Existe dois símbolos de divisão de matrizes:

Existe dois símbolos de divisão de matrizes: /  / ee \  \ . Os significados são:. Os significados são: X = A\B é solução do sistema A*X =

X = A\B é solução do sistema A*X = BB X = B/A é solução do sistema X*A = X = B/A é solução do sistema X*A = BB

Funções Elementares e Transcendentais Funções Elementares e Transcendentais

O MATLAB enxerga expressões como

O MATLAB enxerga expressões como exp(A)exp(A) ee sqrt(A)sqrt(A) como operaçãocomo operação

sobre cada um dos elementos de um vetor (linha ou coluna). Existem funções sobre cada um dos elementos de um vetor (linha ou coluna). Existem funções para calculo de funções transcendentais de matrizes, quando essas são para calculo de funções transcendentais de matrizes, quando essas são quadradas. Exemplos:

quadradas. Exemplos:

•• expm expm exponencial exponencial de de uma uma matrizmatriz •• logm logm logaritmo logaritmo de de uma uma matrizmatriz •• sqrtm sqrtm raiz raiz quadrada quadrada de de uma uma matrizmatriz

Outras funções elementares sobre matrizes

Outras funções elementares sobre matrizes incluem:incluem:

•• poly poly polinômio polinômio caraterísticocaraterístico •• det det determinantedeterminante

•• trace trace traçotraço

1.1.3

1.1.3 Operações emOperações em Array Array

Refere-se a operações em

Refere-se a operações em arrayarray as operações aritméticas realizadasas operações aritméticas realizadas

elemento a elemento ao invés da operação matricial algébrica usual definida elemento a elemento ao invés da operação matricial algébrica usual definida pelos símbolos

pelos símbolos * \ / ^* \ / ^ ee ''. Para indicar que a operação é elemento-a-elemento usa-. Para indicar que a operação é elemento-a-elemento

usa-se um ponto (

(12)

Somando e Subtraindo

Somando e Subtraindo Arrays Arrays 

Para a adição e subtração, as operações de

Para a adição e subtração, as operações de arraysarrays e as de matrizes são ase as de matrizes são as

mesmas. Neste caso

mesmas. Neste caso ++ ee -- podem ser usados sem o ponto.podem ser usados sem o ponto.

Multiplicando e Dividindo

Multiplicando e Dividindo Arrays Arrays 

O símbolo

O símbolo .*.* denota multiplicação elemento-a-elemento. Sedenota multiplicação elemento-a-elemento. Se A A ee B B têmtêm

mesma dimensão, então

mesma dimensão, então A.*BA.*B resulta numresulta num arrayarray cujos elementos são o produtocujos elementos são o produto

dos elementos individuais de

dos elementos individuais de A A e dee de B B. Exemplo:. Exemplo:

»» x = [1 2 3]; y = [4 5 6];x = [1 2 3]; y = [4 5 6]; »» z = x.*yz = x.*y z = z = 4 4 10 10 1818 A expressão

A expressão A./BA./B ee A.\BA.\B resulta no quociente de cada elemento. Exemplo:resulta no quociente de cada elemento. Exemplo:

»» z = x.\yz = x.\y z = z =

4.0000 2.5000 2.000 4.0000 2.5000 2.000

Usando Potenciação com Arrays Usando Potenciação com Arrays

O símbolo

O símbolo .^.^ denota potenciação elemento-a-elemento. Exemplo:denota potenciação elemento-a-elemento. Exemplo:

»» z = x.^yz = x.^y z = z = 1 1 32 32 729729 Operadores Relacionais Operadores Relacionais

Para comparar-se matrizes de dimensões idênticas existem seis (6) Para comparar-se matrizes de dimensões idênticas existem seis (6) operadores relacionais.

operadores relacionais.

< menor < menor

(13)

> maior > maior >=

>= maior maior ou ou igualigual

== igual

== igual

~= diferente

~= diferente

O MATLAB compara os pares de elementos correspondentes. O resultado O MATLAB compara os pares de elementos correspondentes. O resultado é uma matriz de "uns" e "zeros", onde "um" representa "verdadeiro" e "zero" é uma matriz de "uns" e "zeros", onde "um" representa "verdadeiro" e "zero" representa "falso". Exemplo:

representa "falso". Exemplo:

»» 2 + 2 ~= 42 + 2 ~= 4 ans = ans =

0 0

O exemplo abaixo, ilustra como encontrar os elementos das matriz

O exemplo abaixo, ilustra como encontrar os elementos das matriz A A queque

são divisíveis por 3: são divisíveis por 3:

»» A = [8 1 6; 3 5 7; 4 9 2];A = [8 1 6; 3 5 7; 4 9 2]; »» G = rem(A,3);G = rem(A,3); »» P = (G == 0)P = (G == 0) P = P = 0 0 0 0 11 1 1 0 0 00 0 0 1 1 00 A função

A função rem(A,3)rem(A,3) retorna a matriz dos restos da divisão por 3. Cada umretorna a matriz dos restos da divisão por 3. Cada um

dos elementos de

dos elementos de GG informa se a operação relacional é falsa (0) ou verdadeirainforma se a operação relacional é falsa (0) ou verdadeira

(1). (1).

A função

A função

 find 

 find 

é muito usada em conjunto com operadores relacionais. Oé muito usada em conjunto com operadores relacionais. O exemplo abaixo ilustra como localizar todos os elementos de

exemplo abaixo ilustra como localizar todos os elementos de Y Y que são maioresque são maiores

que 3 e substituí-los por 10. que 3 e substituí-los por 10.

»» Y = [1 2 3 4 5 6 7 8 9];Y = [1 2 3 4 5 6 7 8 9];

»» i = find(Y > 3.0);i = find(Y > 3.0);

»» Y(i) = 10*ones(size(i));Y(i) = 10*ones(size(i));

Operadores Lógicos Operadores Lógicos

(14)

Os operadores

Os operadores &&,, ||, , ee ~~ são os operadores lógicos "e", "ou" e "não"são os operadores lógicos "e", "ou" e "não"

respectivamente. As funções

respectivamente. As funções

 any

 any

ee

 all 

 all 

são muito utilizadas em conjunto comsão muito utilizadas em conjunto com operadores lógicos. A função

operadores lógicos. A função any(x)any(x) retorna "1" se qualquer elemento deretorna "1" se qualquer elemento de x x forfor

não nulo e retorna "0" caso contrário. A função

não nulo e retorna "0" caso contrário. A função all(x)all(x) retorna "1" somente seretorna "1" somente se

todos os elementos de

todos os elementos de x x são não nulos. Essas funções são particularmente úteissão não nulos. Essas funções são particularmente úteis

na declaração de um na declaração de um

if 

if 

..

if all(A < 0.5) if all(A < 0.5)

faça alguma coisa  faça alguma coisa  end

end

Funções Matemáticas Funções Matemáticas

Um conjunto de funções matemáticas elementares são aplicáveis Um conjunto de funções matemáticas elementares são aplicáveis elemento-a-elemento num

elemento-a-elemento num arrayarray..

»» A = [ -1 2 -3; 4 -5 6];A = [ -1 2 -3; 4 -5 6]; »» B = abs(A)B = abs(A) B = B = 1 1 2 2 33 4 4 5 5 66 1.1.4

1.1.4 Manipulação Matricial e VetorialManipulação Matricial e Vetorial

A capacidade de indexação do

A capacidade de indexação do MATLAB permite manipulação de linhas eMATLAB permite manipulação de linhas e colunas, elementos individuais e submatrizes de matrizes. Os vetores são o colunas, elementos individuais e submatrizes de matrizes. Os vetores são o ponto central da indexação e eles são gerados com o uso de

ponto central da indexação e eles são gerados com o uso de

::

(dois pontos).(dois pontos).

Gerando Vetores Gerando Vetores

A declaração abaixo ilustra a criação de um vetor usando (:) dois pontos: A declaração abaixo ilustra a criação de um vetor usando (:) dois pontos:

»» x = 1:5x = 1:5 x = x =

1 2 3 4 5

(15)

Você pode também criar o vetor com incrementos diferentes da unidade. Você pode também criar o vetor com incrementos diferentes da unidade. No exemplo a seguir o passo é de

No exemplo a seguir o passo é de ππ /4. /4.

»» y = 0 : pi/4 : piy = 0 : pi/4 : pi y = y = 0.0000 0.7854 1.5708 2.3562 3.1416 0.0000 0.7854 1.5708 2.3562 3.1416 »» z = 6: -1 : 1z = 6: -1 : 1 z = z = 6 5 4 3 2 1 6 5 4 3 2 1

A uso de (:) permite a criação rápida de tabelas como ilustrado a seguir: A uso de (:) permite a criação rápida de tabelas como ilustrado a seguir:

»» x = (0 : 0.2 : 3)';x = (0 : 0.2 : 3)'; »» y = exp(-x).*sin(x);y = exp(-x).*sin(x); »» [x y][x y] ans = ans = 0 0 00 0.2000 0.1627 0.2000 0.1627 0.4000 0.2610 0.4000 0.2610 0.6000 0.3099 0.6000 0.3099 0.8000 0.3223 0.8000 0.3223 1.0000 0.3096 1.0000 0.3096 1.2000 0.2807 1.2000 0.2807 1.4000 0.2430 1.4000 0.2430 1.6000 0.2018 1.6000 0.2018 1.8000 0.1610 1.8000 0.1610 2.0000 0.1231 2.0000 0.1231 2.2000 0.0896 2.2000 0.0896 2.4000 0.0613 2.4000 0.0613 2.6000 0.0383 2.6000 0.0383 2.8000 0.0204 2.8000 0.0204 3.0000 0.0070 3.0000 0.0070

Existem outras funções para a geração de vetores tal como

Existem outras funções para a geração de vetores tal como

logspace

logspace

queque gera um vetor espaçado

gera um vetor espaçado logaritmicamente:logaritmicamente:

»» w = logspace(-1,1,5)w = logspace(-1,1,5) w = w = 0.1000 0.1000 0.3162 0.3162 1.0000 1.0000 3.1623 3.1623 10.000010.0000 Indexando Indexando

(16)

Elementos individuais de matrizes podem ser referenciados inserindo seus Elementos individuais de matrizes podem ser referenciados inserindo seus índices de linha e coluna entre parênteses. Se uma expressão for usada como índices de linha e coluna entre parênteses. Se uma expressão for usada como índice, o

índice, o resultado é aproximresultado é aproximado paro o ado paro o inteiro mais inteiro mais próximo.próximo.

»» A = [1 2 3; 4 5 6; 7 8 9];A = [1 2 3; 4 5 6; 7 8 9];

»» A(3,3) = A(1,3) + A(3,1)A(3,3) = A(1,3) + A(3,1) A = A = 1 1 2 2 33 4 4 5 5 66 7 7 8 108 10

Usando (:) dois pontos, podemos indexar todas as linhas ou colunas ou Usando (:) dois pontos, podemos indexar todas as linhas ou colunas ou uma parte: uma parte: »» A(:,1)A(:,1) A = A = 1 1 4 4 7 7 »» A(2:3,1:2)A(2:3,1:2) A = A = 4 4 55 7 7 88

O exemplo a seguir mostra como fazer referência explícita a algumas O exemplo a seguir mostra como fazer referência explícita a algumas linhas ou colunas. Coloca-se os números das linhas e colunas dentro de linhas ou colunas. Coloca-se os números das linhas e colunas dentro de colchetes: colchetes: »» A([1 3],[1 3])A([1 3],[1 3]) A = A = 1 1 33 7 7 1010

Um outro uso para os dois pontos (:) é no empilhamento das colunas de Um outro uso para os dois pontos (:) é no empilhamento das colunas de uma matriz qualquer. No caso de vetores, obteremos sempre o vetor coluna:

uma matriz qualquer. No caso de vetores, obteremos sempre o vetor coluna:

»» A = [1 2; 3 4; 5 6];A = [1 2; 3 4; 5 6]; »» B = A(:)B = A(:) B = B = 1 1

(17)

2 2 3 3 4 4 5 5 6 6

Usando Vetores de 0s-1s na Indexação Usando Vetores de 0s-1s na Indexação

Você pode usar vetores de "uns", usualmente criados a partir de Você pode usar vetores de "uns", usualmente criados a partir de operadores relacionais no referenciamento de submatrizes. Suponha que

operadores relacionais no referenciamento de submatrizes. Suponha que A A é umaé uma

matriz de dimensão

matriz de dimensão mm-por--por-nn ee L L um vetor linha de "zeros" e "uns" de dimensãoum vetor linha de "zeros" e "uns" de dimensão m

m. Então,. Então,

»» A(L,:)A(L,:)

especifica as linhas de

especifica as linhas de A A cujos elementos decujos elementos de LL são não nulos. Ou seja, os uns desão não nulos. Ou seja, os uns de  L

 L apontam para as linhas deapontam para as linhas de A A. O exemplo a seguir mostra como extrair de. O exemplo a seguir mostra como extrair de X  X asas

linhas cuja terceira coluna é maior ou igual a 100. linhas cuja terceira coluna é maior ou igual a 100.

»» L = X(:,3) > 100;L = X(:,3) > 100; »» Y = X(L,:);Y = X(L,:); Matrizes vazias Matrizes vazias A declaração, A declaração, »» X = []X = []

atribui a matriz de dimensão zero-por-zero à

atribui a matriz de dimensão zero-por-zero à X  X , sendo possível usar a variável, sendo possível usar a variável X  X 

em cálculos. Criar a matriz

em cálculos. Criar a matriz X  X vazia é diferente do que apagar a variávelvazia é diferente do que apagar a variável X  X com ocom o

comando

comando

 clear

 clear

 X  X . Com o uso de matrizes vazias é possível remover linhas e. Com o uso de matrizes vazias é possível remover linhas e

colunas de uma matriz, como mostra o exemplo a seguir que apaga as colunas 2 colunas de uma matriz, como mostra o exemplo a seguir que apaga as colunas 2 e 4 da matriz

e 4 da matriz A A::

(18)

Existe uma coleção de funções que geram matrizes que são encontradas Existe uma coleção de funções que geram matrizes que são encontradas nos problemas de álgebra linear e processamento de sinais. Exemplos:

nos problemas de álgebra linear e processamento de sinais. Exemplos:

•• compancompan - gera a matriz a partir do polinômio caraterístico- gera a matriz a partir do polinômio caraterístico •• diagdiag- matriz diagonal- matriz diagonal

•• pascalpascal - constrói o triângulo de Pascal- constrói o triângulo de Pascal •• zeroszeros- matriz de "zeros"- matriz de "zeros"

•• onesones - matriz de "uns"- matriz de "uns" •• eyeeye- matriz identidade- matriz identidade

•• logspacelogspace - vetores espaçados - vetores espaçados logaritmicamentelogaritmicamente •• linspacelinspace- vetores espaçados linearmente- vetores espaçados linearmente

•• randrand - elementos randômicos uniformemente distribuídos- elementos randômicos uniformemente distribuídos •• randnrandn - elementos randômicos normalmente distribuídos- elementos randômicos normalmente distribuídos •• etc ...etc ...

Construindo Matrizes Grandes Construindo Matrizes Grandes

É possível formar matrizes maiores a partir de matrizes menores, É possível formar matrizes maiores a partir de matrizes menores, envolvendo as matrizes menores entre colchetes . Por exemplo, se

envolvendo as matrizes menores entre colchetes . Por exemplo, se  A A é umaé uma

matriz quadrada, matriz quadrada,

»» C C = = [A [A A'; A'; ones(size(A)) ones(size(A)) A.^2]A.^2]

cria a matriz

cria a matriz C C com o dobro do tamanho decom o dobro do tamanho de  A A. Note que na construção de. Note que na construção de

matrizes usando matrizes, as dimensões das matrizes menores devem ser matrizes usando matrizes, as dimensões das matrizes menores devem ser compatíveis ou então aparecerá uma mensagem de

compatíveis ou então aparecerá uma mensagem de erro.erro.

Manipulando Matrizes Manipulando Matrizes

Várias funções estão disponíveis para a manipulação matricial como: Várias funções estão disponíveis para a manipulação matricial como:

 rot90

 rot90

(rotação),(rotação),

 tril 

 tril 

(parte triangular superior),(parte triangular superior),

 triu

 triu

(parte triangular inferior),(parte triangular inferior),

 reshape

(19)

1.1.5

1.1.5 Análise de DadosAnálise de Dados

Esta seção apresenta uma introdução à análise de dados usando o Esta seção apresenta uma introdução à análise de dados usando o MATLAB. Técnicas mais poderosas estão disponíveis usando funções de MATLAB. Técnicas mais poderosas estão disponíveis usando funções de álgebra linear e funções de processamento de sinais na seção 1.1.7 (polinômios e álgebra linear e funções de processamento de sinais na seção 1.1.7 (polinômios e processamento de sinais).

processamento de sinais).

Convenção Convenção

Por convenção, as diferentes variáveis em um conjunto de dados são Por convenção, as diferentes variáveis em um conjunto de dados são colocadas em colunas, permitindo observação vertical dos dados através das colocadas em colunas, permitindo observação vertical dos dados através das linhas. Portanto, um conjunto de dados de 50 amostras de 13 variáveis é linhas. Portanto, um conjunto de dados de 50 amostras de 13 variáveis é armazenado numa matriz de dimensão 50-por-13.

armazenado numa matriz de dimensão 50-por-13.

O conjunto de dados armazenados na matriz

O conjunto de dados armazenados na matriz countcount será usado para ilustrarserá usado para ilustrar

o uso de algumas funções o uso de algumas funções

count = count = 11 11 57 57 291291 43 43 178 178 10111011 38 38 163 163 10951095 61 61 420 420 24072407 12 12 59 59 287287

Para esse exemplo temos 5 observações para 3 variáveis. Isso pode ser Para esse exemplo temos 5 observações para 3 variáveis. Isso pode ser obtido como segue:

obtido como segue:

»» [n,p] = size(count)[n,p] = size(count) n = n = 5 5 p = p = 3 3

Um grupo de funções (abaixo) confere a capacidade de análise de dados Um grupo de funções (abaixo) confere a capacidade de análise de dados básica:

básica:

•• maxmax - máximo valor- máximo valor •• minmin - mínimo valor- mínimo valor •• meanmean - valor médio- valor médio •• medianmedian - mediana- mediana

(20)

•• sortsort - ordenação- ordenação

•• sumsum - soma dos elementos- soma dos elementos •• prodprod - produto dos elementos- produto dos elementos

•• cumsumcumsum - soma cumulativa dos elementos- soma cumulativa dos elementos •• cumprodcumprod - Produto cumulativos dos elementos- Produto cumulativos dos elementos •• diff diff  - Aproximação da derivada- Aproximação da derivada

•• corrcoef corrcoef  - Coeficientes de correlação- Coeficientes de correlação •• covcov - Matriz de covariância- Matriz de covariância

Para argumentos vetoriais não faz diferença se o vetor é linha ou coluna. Para argumentos vetoriais não faz diferença se o vetor é linha ou coluna. Para

Para arraysarrays as funções são orientadas por colunas.as funções são orientadas por colunas.

Continuando com o exemplo anterior, as declarações abaixo Continuando com o exemplo anterior, as declarações abaixo

»» mx = max(count);mx = max(count);

»» mu = mean(count);mu = mean(count);

»» sigma = std(count);sigma = std(count);

resultam em: resultam em: mx = mx = 61 61 420 420 24072407 mu = mu = 1.0e+003 * 1.0e+003 * 0.0330 0.1754 1.0182 0.0330 0.1754 1.0182 sigma = sigma = 21.4126 147.9503 865.7639 21.4126 147.9503 865.7639 Ajuste de Curvas Ajuste de Curvas

Uma das alternativas possíveis no MATLAB para encontrarmos os Uma das alternativas possíveis no MATLAB para encontrarmos os coeficientes de

coeficientes de p(x) p(x) a partir de dados tabelados é através da funçãoa partir de dados tabelados é através da função

 polyfit

 polyfit

, onde, onde n

n é o grau do polinômio.é o grau do polinômio.

( ( ))

p

p x x c = + = + c 11x c x d d c x 22x d d −−11 + + ++ ccnn

A sintaxe de chamada é a seguinte, onde

A sintaxe de chamada é a seguinte, onde x x é a abcissa,é a abcissa, p p o valor da funçãoo valor da função

para cada

(21)

»» c = polifit(x,p,n)c = polifit(x,p,n)

1.1.6

1.1.6 Funções MatriciaisFunções Matriciais

Autovalores e Autovetores Autovalores e Autovetores

Se

Se A A é uma matrizé uma matriz nn-por--por-nn, , osos nn númerosnúmeros λ λ  que satisfazem a equaçãoque satisfazem a equação

 Ax =

 Ax = λ λ  x, x, são os autovalores desão os autovalores de A A. Eles são encontrados usando. Eles são encontrados usando

»» eig(A)eig(A)

Se o comando for usado com dois parâmetros de saída, obteremos os Se o comando for usado com dois parâmetros de saída, obteremos os autovalores em

autovalores em D D e os autovetores eme os autovetores em X X ::

»» [X,D] = eig(A)[X,D] = eig(A)

Norma, Posto e Condicionamento Norma, Posto e Condicionamento

As funções MATLAB que calculam a norma, posto e número de As funções MATLAB que calculam a norma, posto e número de condicionamento de uma matriz são:

condicionamento de uma matriz são:

•• condcond - número de condicionamento usando norma 2- número de condicionamento usando norma 2 •• normnorm - norma 1, norma 2, norma F e norma- norma 1, norma 2, norma F e norma ∞∞

•• rankrank - posto da matriz- posto da matriz

•• rcondrcond - estimativa do condicionamento- estimativa do condicionamento

1.1.7

1.1.7 Polinômios e Processamento de SinaisPolinômios e Processamento de Sinais

O MATLAB possui funções para manipulação polinomial e para o O MATLAB possui funções para manipulação polinomial e para o processamento digital de sinais. Essas funções operam primordialmente com processamento digital de sinais. Essas funções operam primordialmente com vetores.

vetores.

Representação de Polinômios Representação de Polinômios

O MATLAB representa polinômios como vetores linha contendo os O MATLAB representa polinômios como vetores linha contendo os coeficientes ordenados em ordem decrescente dos expoentes. Por exemplo, o coeficientes ordenados em ordem decrescente dos expoentes. Por exemplo, o polinômio característico de

(22)

A = A = 1 1 2 2 33 4 4 5 5 66 7 7 8 8 00 é calculado com é calculado com »» p = poly(A)p = poly(A) p = p = 1 -6 -72 -27 1 -6 -72 -27

Esta é a representação MATLAB do polinômio

Esta é a representação MATLAB do polinômio s s 33− − 66s s 22 − − 7722ss−−2277. As raízes dessa. As raízes dessa

equação são equação são »» r = roots(p)r = roots(p) r = r = 12.1229 12.1229 -5.7345 -5.7345 -0.3884 -0.3884

Essas raízes são os mesmos que os autovalores da matriz

Essas raízes são os mesmos que os autovalores da matriz A A. Você pode remontar. Você pode remontar

o polinômio original com a função

o polinômio original com a função

 poly

 poly

»» p2 = poly(r)p2 = poly(r) p2 = p2 = 1 -6 -72 -27 1 -6 -72 -27 Considere os polinômios

Considere os polinômios a a s (( ))s s = = + s 22 + ++22ss 33 ee b b (( ))s s = = 44s s 22 + + ++55ss 66. O produto dos. O produto dos

polinômios é a convolução dos seus coeficientes polinômios é a convolução dos seus coeficientes

»» a = [1 a = [1 2 3]; 2 3]; b = [4 b = [4 5 6];5 6]; »» c = conv(a,b)c = conv(a,b) c = c = 4 13 28 27 18 4 13 28 27 18

Você pode utilizar a convolução inversa para dividir dois polinômios, e no Você pode utilizar a convolução inversa para dividir dois polinômios, e no caso do exemplo, obter

(23)

»» [q,r] = deconv(c,a)[q,r] = deconv(c,a) q = q = 4 4 5 5 66 r = r = 0 0 0 0 0 0 0 0 0 0

A lista de funções de polinômios inclui: A lista de funções de polinômios inclui:

•• polypoly - polinômio característico- polinômio característico •• rootsroots - raízes de um polinômio- raízes de um polinômio

•• polyvalpolyval - cálculo do valor numérico do polinômio- cálculo do valor numérico do polinômio •• polyvalmpolyvalm - cálculo do polinômio de matrizes- cálculo do polinômio de matrizes

•• convconv - multiplicação (convolução)- multiplicação (convolução) •• deconvdeconv - divisão (deconvolução)- divisão (deconvolução)

•• residueresidue - expansão em frações parciais- expansão em frações parciais •• polyderpolyder - derivada do polinômio- derivada do polinômio

•• polyfitpolyfit - ajuste polinomial de curva- ajuste polinomial de curva

Processamento de Sinais Processamento de Sinais

Vetores são usados para armazenar sinais de dados amostrados, ou Vetores são usados para armazenar sinais de dados amostrados, ou seqüências, para o processamento dos sinais. Para sistemas com múltiplas seqüências, para o processamento dos sinais. Para sistemas com múltiplas entradas, cada linha da matriz corresponde a uma amostra. O MATLAB básico entradas, cada linha da matriz corresponde a uma amostra. O MATLAB básico contém as funções a seguir, enquanto que o

contém as funções a seguir, enquanto que o Signal Processing ToolboxSignal Processing Toolbox contémcontém

muitas funções adicionais. muitas funções adicionais.

•• absabs - magnitude complexa- magnitude complexa •• angleangle - ângulo de fase- ângulo de fase

•• convconv - convolução- convolução •• deconvdeconv - deconvolução- deconvolução

•• fftfft - transformada rápida de Fourier- transformada rápida de Fourier

•• ifftifft - transformada rápida inversa de Fourier- transformada rápida inversa de Fourier •• fftshiftfftshift - alterna quadrantes de matrizes- alterna quadrantes de matrizes

•• fft2fft2 - FFT de duas dimensões- FFT de duas dimensões

•• ifft2ifft2 - FFT inversa de duas dimensões- FFT inversa de duas dimensões •• fftshiftfftshift - rearranja os resultados da FFT- rearranja os resultados da FFT •• conv2conv2 - convolução de duas dimensões- convolução de duas dimensões

Filtragem de Dados Filtragem de Dados

(24)

A função, A função,

»» y = filter(b,a,x)y = filter(b,a,x)

filtra os dados do vetor

filtra os dados do vetor x x com o filtro descrito pelos vetorescom o filtro descrito pelos vetores aa ee bb, criando o, criando o

dado

dado y y filtrado.filtrado.

x

x yy

H(z) H(z)

A estrutura do filtro é dada a seguir pela sua função de transferência de A estrutura do filtro é dada a seguir pela sua função de transferência de tempo discreta tempo discreta  H  H zz Y Y zz  X  X zz b b b b z z b b nnb b zz a a z z a a nna a zz nb nb na na (( )) (( )) (( )) (( )) (( )) (( )) (( )) (( )) (( )) (( )) = = == + + + + ++ + + + + ++ − − − − −− − − − − −− 11 22 11 22 11 11 11 11     A função

A função

 freqz

 freqz

dodo Signal Processing ToolboxSignal Processing Toolbox, calcula a resposta em, calcula a resposta em

freqüência de filtros digitais. Além dessa, exemplificada abaixo, esse

freqüência de filtros digitais. Além dessa, exemplificada abaixo, esse ToolboxToolbox

contém inúmeras funções para o projeto de filtros digitais. contém inúmeras funções para o projeto de filtros digitais.

»» [h,w] = freqz(b,a,n);[h,w] = freqz(b,a,n);

»» mag = abs(h);mag = abs(h);

»» fase = angle(h);fase = angle(h);

»» semilogy(w,mag)semilogy(w,mag)

»» plot(w,fase)plot(w,fase)

1.1.8

1.1.8 Funções de FunçõesFunções de Funções

A classe de funções MATLAB para cálculo que não é sobre matrizes A classe de funções MATLAB para cálculo que não é sobre matrizes numéricas, mais sim com funções matemáticas é aqui designada por funções de numéricas, mais sim com funções matemáticas é aqui designada por funções de funções e incluem:

funções e incluem:

•• Integração NuméricaIntegração Numérica

•• Equações não lineares e OtimizaçãoEquações não lineares e Otimização •• Solução de Equações DiferenciaisSolução de Equações Diferenciais

(25)

O MATLAB representa funções matemáticas através de arquivos-M O MATLAB representa funções matemáticas através de arquivos-M (M-files). Por exemplo, a função

files). Por exemplo, a função

 f  f xx  x  x xx (( )) (( ,, )) ,, (( ,, )) ,, == − − ++ ++ − − ++ −− 11 00 33 00 0011 11 00 99 00 0044 66 22 22

torna-se disponível no MATLAB se criarmos um arquivo com extensão

torna-se disponível no MATLAB se criarmos um arquivo com extensão .m.m, por, por

exemplo chamado

exemplo chamado humps.mhumps.m, cuja listagem é mostrada a seguir:, cuja listagem é mostrada a seguir:

% listagem do arquivo humps.m % listagem do arquivo humps.m function y =

function y = humps(x)humps(x)

y = 1./((x-.3).^2 + .01) + 1./((x-.9).^2 + .04) - 6; y = 1./((x-.3).^2 + .01) + 1./((x-.9).^2 + .04) - 6;

O gráfico dessa função é obtido como segue O gráfico dessa função é obtido como segue

»» x = -1:.01:2;x = -1:.01:2; »» plot(x,humps(x))plot(x,humps(x)) --11 --00..55 00 0..505 11 11..55 22 -20 -20 0 0 20 20 40 40 60 60 80 80 100 100 Integração Numérica Integração Numérica

Uma função, tal como

Uma função, tal como

 humps

 humps

, pode ser integrada numericamente pelo, pode ser integrada numericamente pelo processo chamado de quadratura. Exemplo:

(26)

»» q = quad('humps',0,1)q = quad('humps',0,1) q =

q =

29.8583 29.8583

O MATLAB oferece duas funções para o processo de quadratura: O MATLAB oferece duas funções para o processo de quadratura:

•• quadquad - regra de Simpson adaptativa- regra de Simpson adaptativa •• quad8quad8 - regra de Newton adaptativa- regra de Newton adaptativa

Note que o primeiro argumento da função

Note que o primeiro argumento da função

quad 

quad 

é umaé uma stringstring que contém oque contém o

nome de uma função. Isso mostra porque essa função é chamada função de nome de uma função. Isso mostra porque essa função é chamada função de função (é uma função que opera com outras funções). Os outros dois argumentos função (é uma função que opera com outras funções). Os outros dois argumentos são os limites de integração.

são os limites de integração.

Equações Não Lineares e Funções

Equações Não Lineares e Funções de Otimizaçãode Otimização

No MATLAB básico encontramos algumas funções para a manipulação No MATLAB básico encontramos algumas funções para a manipulação de equações não lineares e para otimizações.

de equações não lineares e para otimizações.

•• fminfmin - mínimo de uma função de uma var- mínimo de uma função de uma variáveliável •• fminsfmins - mínimo de uma função multivariável- mínimo de uma função multivariável •• fzerofzero - zero de uma função de uma variável- zero de uma função de uma variável

Continuando com o exemplo definido pela função

Continuando com o exemplo definido pela função humps.mhumps.m, a localização, a localização

do mínimo da função na região de 0.5 a 1 é calculada com

do mínimo da função na região de 0.5 a 1 é calculada com

 fmin

 fmin

::

»» xm = fmin('humps',0.5, 1)xm = fmin('humps',0.5, 1) xm =

xm =

0.6370 0.6370

e o seu valor no mínimo é e o seu valor no mínimo é

»» y = humps(xm)y = humps(xm) y =

y =

11.2528 11.2528

A localização do zero da função que está próximo de

(27)

»» xz1 = fzero('humps',0)xz1 = fzero('humps',0) xz1 = xz1 = -0.1316 -0.1316 »» xz2 = fzero('humps',1)xz2 = fzero('humps',1) xz2 = xz2 = 1.2995 1.2995 No

No Optimization ToolboxOptimization Toolbox temos inúmeras outras funções como portemos inúmeras outras funções como por

exemplo, exemplo,

•• attgoalattgoal -- goal attainment goal attainment multi-objetivomulti-objetivo

•• constrconstr - minimização com restrições- minimização com restrições •• fminufminu - minimização sem restrições- minimização sem restrições

•• fsolvefsolve - solução de equações não lineares- solução de equações não lineares •• leastsqleastsq - mínimos quadrados não linear- mínimos quadrados não linear •• minimaxminimax - solução do pr- solução do problema minimaxoblema minimax •• seminf seminf  - minimização semi-infinita- minimização semi-infinita

Equações Diferenciais Equações Diferenciais

As funções disponíveis para a solução de equações diferenciais ordinárias As funções disponíveis para a solução de equações diferenciais ordinárias são:

são:

•• ode23ode23 - método Runge-Kutta de 2ª/3ª ordem- método Runge-Kutta de 2ª/3ª ordem

•• ode45ode45 - método Runge-Kutta-Fehlberg de 4ª/5ª ordem- método Runge-Kutta-Fehlberg de 4ª/5ª ordem

Considere a equação diferencial de segunda ordem conhecida como Considere a equação diferencial de segunda ordem conhecida como equação de Van der Pol.

equação de Van der Pol.

x x x x

+

+ −

((

22

− +

11

))

x x xx

+ ==

00

Esta equação pode ser escrita como um sistema de equações diferenciais de Esta equação pode ser escrita como um sistema de equações diferenciais de primeira ordem primeira ordem 

((

))

 x x x x x x xx  x  x xx 11 11 22 22 22 22 11

11

=

=

−−

==

(28)

O primeiro passo para simular este sistema é criar um arquivo que contem este O primeiro passo para simular este sistema é criar um arquivo que contem este sistema de equações diferenciais. Chamaremos este ar

sistema de equações diferenciais. Chamaremos este arquivo dequivo de vdpol.mvdpol.m

function xponto = vdpol(t,x) function xponto = vdpol(t,x) xponto(1) =

xponto(1) = x(1).*(1-x(2).^2x(1).*(1-x(2).^2)-x(2);)-x(2); xponto(2) = x(1);

xponto(2) = x(1);

Para simular a equação diferencial no intervalo

Para simular a equação diferencial no intervalo 00 ≤ ≤ ≤≤t t  2020, use a função, use a função

 ode23

 ode23

.. »» t0 = 0; tf = 20;t0 = 0; tf = 20;

»» x0 x0 = = [0 [0 0.25]'; 0.25]'; % % condicoes condicoes iniciaisiniciais

»» [t,x] = ode23('vdpol',t0,tf,x0);[t,x] = ode23('vdpol',t0,tf,x0); »» plot(t,x)plot(t,x) 0 0 55 1100 1155 2200 -3 -3 -2 -2 -1 -1 0 0 1 1 2 2 3 3

Para aqueles que trabalham com equações diferenciais recomenda-se o Para aqueles que trabalham com equações diferenciais recomenda-se o SIMULINK que é uma extensão gráfica do MATLAB para a simulação de SIMULINK que é uma extensão gráfica do MATLAB para a simulação de equações diferenciais.

equações diferenciais.

1.1.9

1.1.9 GráficosGráficos

O sistema gráfico do MATLAB oferece uma variedade de técnicas O sistema gráfico do MATLAB oferece uma variedade de técnicas sofisticadas para representar e visualizar dados. São funções gráficas em 2-D e sofisticadas para representar e visualizar dados. São funções gráficas em 2-D e 3-D.

3-D.

Gráficos 2-D Gráficos 2-D

(29)

O MATLAB fornece uma variedade de funções para a visualização de O MATLAB fornece uma variedade de funções para a visualização de dados em duas dimensões (2-D).

dados em duas dimensões (2-D).

Funções Gráficas Elementares Funções Gráficas Elementares

A lista abaixo sumariza as funções gráficas básicas. Elas diferem apenas A lista abaixo sumariza as funções gráficas básicas. Elas diferem apenas na escala dos eixos. Cada entrada pode ser um vetor ou uma matriz e as escalas na escala dos eixos. Cada entrada pode ser um vetor ou uma matriz e as escalas são ajustadas automaticamente para acomodar os dados de entrada.

são ajustadas automaticamente para acomodar os dados de entrada.

•• plotplot - cria um- cria um plot  plot de vetores ou colunas de matrizesde vetores ou colunas de matrizes

•• loglogloglog - escala logarítmica nos dois eixos- escala logarítmica nos dois eixos

•• semilogxsemilogx - escala logarítmica no eixo- escala logarítmica no eixo x x e linear eme linear em y y

•• semilogysemilogy - escala logarítmica no eixo- escala logarítmica no eixo y y e linear eme linear em x x

•• titletitle - adiciona um título ao gráfico- adiciona um título ao gráfico •• xlabelxlabel - adiciona um nome ao eixo- adiciona um nome ao eixo x x

•• ylabelylabel - adiciona um nome ao eixo- adiciona um nome ao eixo y y

•• texttext - mostra um texto na posição especificada- mostra um texto na posição especificada •• gtextgtext - coloca o texto no gráfico usando o- coloca o texto no gráfico usando o mousemouse

•• gridgrid - coloca linhas de- coloca linhas de grid grid 

Criando um

Criando um Plot Plot 

Se

Se y y é um vetor,é um vetor, plot(y)plot(y) produz um gráfico linear dos elementos deproduz um gráfico linear dos elementos de y y emem

função do indexador de

função do indexador de y y. Se você especificar dois vetores como argumentos,. Se você especificar dois vetores como argumentos,

plot(x,y)

plot(x,y) produz um gráfico deproduz um gráfico de y y versusversus x x. Você pode também especificar vários. Você pode também especificar vários

conjuntos de dados e definir o estilo da linha e sua cor para cada conjunto de conjuntos de dados e definir o estilo da linha e sua cor para cada conjunto de dados, tudo isso num mesmo comando:

dados, tudo isso num mesmo comando:

»» t = 0:pi/100:2*pi;t = 0:pi/100:2*pi; »» x = sin(t);x = sin(t); »» y1 = sin(t + 0.25);y1 = sin(t + 0.25); »» y2 = sin(t + 0.5);y2 = sin(t + 0.5); »» plot(x,y1,'r-',x,y2,'g--')plot(x,y1,'r-',x,y2,'g--') »» title('Defasagem')title('Defasagem') »» xlabel('x=sin(t)')xlabel('x=sin(t)') »» ylabel('y=sin(t+)')ylabel('y=sin(t+)')

(30)

--11 --00..55 00 00..55 11 -1 -1 -0.8 -0.8 -0.6 -0.6 -0.4 -0.4 -0.2 -0.2 0 0 0.2 0.2 0.4 0.4 0.6 0.6 0.8 0.8 1 1 x=sin(t) x=sin(t) y=sin(t+) y=sin(t+) Defasagem Defasagem

Estilos de Linhas, Marcadores e Cores Estilos de Linhas, Marcadores e Cores

Tal como mostrou-se no exemplo anterior, você pode passar um caractere Tal como mostrou-se no exemplo anterior, você pode passar um caractere como um argumento à função

como um argumento à função

 plot

 plot

para especificar um dos vários estilos depara especificar um dos vários estilos de linha, símbolos e cores. Na declaração

linha, símbolos e cores. Na declaração plot(X,Y,S)plot(X,Y,S),, SS é umaé uma stringstring de 1, 2 ou 3de 1, 2 ou 3

caracteres (delimitados por apóstrofes) com as funções definidas pela tabela a caracteres (delimitados por apóstrofes) com as funções definidas pela tabela a seguir. Se você não especificar uma cor, ele usa as cores da tabela seguir. Se você não especificar uma cor, ele usa as cores da tabela automaticamente.

(31)

Símbolo Cor

Símbolo Cor Símbolo Símbolo LinhaLinha

yy m m cc rr gg bb w w kk yellow yellow magenta magenta cyan cyan red red green green blue blue white white black black .. oo xx ++ ** --:: -. -. --ponto ponto círculo círculo marca x marca x marca + marca + marca * marca * sólida sólida pontilhada pontilhada traço-ponto traço-ponto tracejada tracejada

Adicionando Linhas num Gráfico Existente Adicionando Linhas num Gráfico Existente

Você pode adicionar outras curvas em um gráfico que já foi construído Você pode adicionar outras curvas em um gráfico que já foi construído usando o comando

usando o comando

 hold 

 hold 

. Quando você seleciona. Quando você seleciona

 hold on

 hold on

, o MATLAB não, o MATLAB não remove as linhas atuais, ao invés disso ele adiciona as linhas atuais ao gráfico remove as linhas atuais, ao invés disso ele adiciona as linhas atuais ao gráfico atual.

atual.

O que ele pode fazer é mudar a escala dos eixos automaticamente se os novos O que ele pode fazer é mudar a escala dos eixos automaticamente se os novos dados não se acomodarem dentro da escala anterior. Exemplo:

dados não se acomodarem dentro da escala anterior. Exemplo:

»» plot(x)plot(x)

»» hold onhold on

»» plot(y1,'--')plot(y1,'--')

»» plot(y2,'-.')plot(y2,'-.')

»» hold offhold off

Resulta, Resulta,

(32)

0 0 5500 110000 115500 220000 225500 -1 -1 -0.8 -0.8 -0.6 -0.6 -0.4 -0.4 -0.2 -0.2 0 0 0.2 0.2 0.4 0.4 0.6 0.6 0.8 0.8 1 1

Dados Imaginários e Complexos Dados Imaginários e Complexos

Quando os argumentos da função

Quando os argumentos da função

 plot

 plot

são complexos, isto é, eles têmsão complexos, isto é, eles têm parte imaginária diferente de zero, a parte imaginária é ignorada exceto quando parte imaginária diferente de zero, a parte imaginária é ignorada exceto quando

 plot

 plot

é usado com um único argumento. Nesta situação, o comando é umé usado com um único argumento. Nesta situação, o comando é um comando gráfico resumido da parte real versus a parte imaginária. Portanto, comando gráfico resumido da parte real versus a parte imaginária. Portanto,

plot(z)

plot(z)

 , ,

quandoquando  z z é um vetor ou matriz complexa, é equivalente à,é um vetor ou matriz complexa, é equivalente à,

plot(real(z),imag(z)).

plot(real(z),imag(z)). Para ilustrar isso, o exemplo a seguir usa a distribuição dosPara ilustrar isso, o exemplo a seguir usa a distribuição dos

autovalores de uma matriz 20-por-20 randômica: autovalores de uma matriz 20-por-20 randômica:

»» plot(eig(randn(20,20)),’x’)plot(eig(randn(20,20)),’x’) --44 --22 00 22 44 66 -4 -4 -3 -3 -2 -2 -1 -1 0 0 1 1 2 2 3 3 4 4 Distribuição de Autovalores Distribuição de Autovalores

(33)

Plotando Matrizes Plotando Matrizes

A função

A função

 plot

 plot

pode ter um único argumento, comopode ter um único argumento, como plot(Y).plot(Y). Ela desenhaEla desenha

uma curva para cada coluna de

uma curva para cada coluna de Y Y . O eixo. O eixo x x é formado pelo índice de cada linha.é formado pelo índice de cada linha.

Se

Se X  X ee Y Y são matrizes,são matrizes, plot(X,Y)plot(X,Y) plota as coluna deplota as coluna de X  X versus cada as colunas deversus cada as colunas de Y Y ..

»» X = 0:pi/50:2*pi;X = 0:pi/50:2*pi;

»» Y = sin(X); Z = cos(X); W = log(X);Y = sin(X); Z = cos(X); W = log(X);

»» A = [Y' Z' W'];A = [Y' Z' W']; »» plot(A)plot(A) Resulta, Resulta, 0 0 2200 4400 6600 8800 110000 112200 -3 -3 -2.5 -2.5 -2 -2 -1.5 -1.5 -1 -1 -0.5 -0.5 0 0 0.5 0.5 1 1 1.5 1.5 2 2 Importando Dados Importando Dados

Você pode importar e plotar dados gerados fora do MATLAB. Suponha Você pode importar e plotar dados gerados fora do MATLAB. Suponha você tenha um arquivo chamado

você tenha um arquivo chamado dados.datdados.dat contento valores de duas funções e dacontento valores de duas funções e da

variável independente. variável independente.

(34)

dados.dat dados.dat 2.3 1.0 1.0 2.3 1.0 1.0 3.1 1.9 2.0 3.1 1.9 2.0 4.5 2.2 3.0 4.5 2.2 3.0 5.6 2.6 4.0 5.6 2.6 4.0 4.8 3.5 5.0 4.8 3.5 5.0 4.7 4.7 6.0 4.7 4.7 6.0 4.4 5.3 7.0 4.4 5.3 7.0 4.0 6.0 8.0 4.0 6.0 8.0 4.2 7.1 9.0 4.2 7.1 9.0 O comando

O comando load dados.datload dados.dat produz uma matriz chamada dados, 9-por-3. A seguir,produz uma matriz chamada dados, 9-por-3. A seguir,

mostra-se como renomear cada uma das variáveis e como plotar cada função mostra-se como renomear cada uma das variáveis e como plotar cada função separadamente.

separadamente.

»» load dados.datload dados.dat

»» F1 = dados(:,1);F1 = dados(:,1);

»» F2 = dados(:,2);F2 = dados(:,2);

»» X = dados(:,3);X = dados(:,3);

»» subplot(211), plot(X,F1)subplot(211), plot(X,F1)

»» subplot(212), plot(X,F2)subplot(212), plot(X,F2)

Resulta, Resulta, 0 0 22 44 66 88 1100 2 2 3 3 4 4 5 5 6 6 0 0 22 44 66 88 1100 0 0 2 2 4 4 6 6 8 8

Funções Gráficas Especializadas em 2-D Funções Gráficas Especializadas em 2-D

(35)

O MATLAB inclui uma variedade de funções especializadas, conforme O MATLAB inclui uma variedade de funções especializadas, conforme descrito resumidamente a seguir.

descrito resumidamente a seguir.

•• barbar - gráfico de barras- gráfico de barras

•• compasscompass - gráfico de ângulos com setas- gráfico de ângulos com setas •• errorbarerrorbar - gráfico de barras de erros- gráfico de barras de erros •• featherfeather - gráfico de ângulos- gráfico de ângulos

•• fplotfplot - calcula e plota uma função- calcula e plota uma função •• histhist - cria um histograma- cria um histograma

•• polarpolar - gráfico em coordenadas polares- gráfico em coordenadas polares •• quiverquiver - cria um gráfico de um gradiente- cria um gráfico de um gradiente •• roserose - histograma em ângulo- histograma em ângulo

•• stairsstairs - gráfico similar ao de barras sem linhas internas- gráfico similar ao de barras sem linhas internas •• fillfill - desenha um polígono e preenche o interior- desenha um polígono e preenche o interior

Plotando Funções Matemáticas Plotando Funções Matemáticas

Você pode plotar o gráfico de uma função,

Você pode plotar o gráfico de uma função, y y f == (( ))f xx . A solução pela força. A solução pela força

bruta é calcular a função para algumas centenas de pontos no intervalo de bruta é calcular a função para algumas centenas de pontos no intervalo de interesse. Por exemplo, a função a seguir oscila com freqüência tendendo para interesse. Por exemplo, a função a seguir oscila com freqüência tendendo para infinito quando infinito quando x x == 00 55,, .. »» x = (0:1/2000:1)';x = (0:1/2000:1)'; »» plot(x,cos(tan(pi*x)))plot(x,cos(tan(pi*x))) Resulta, Resulta,

(36)

0 0 00..22 00..44 00..66 00..88 11 -1 -1 -0.8 -0.8 -0.6 -0.6 -0.4 -0.4 -0.2 -0.2 0 0 0.2 0.2 0.4 0.4 0.6 0.6 0.8 0.8 1 1 y = cos(tan(pi*x))y = cos(tan(pi*x))

No exemplo, a função é plotada no intervalo [0,1]. Neste caso, a função No exemplo, a função é plotada no intervalo [0,1]. Neste caso, a função

 fplot

 fplot

é mais efetiva para obtermos a representação gráfica da função pois elaé mais efetiva para obtermos a representação gráfica da função pois ela escolhe automaticamente uma quantidade maior de pontos na faixa que é escolhe automaticamente uma quantidade maior de pontos na faixa que é necessário maior resolução gráfica. Para usar a função

necessário maior resolução gráfica. Para usar a função

 fplot

 fplot

, primeiro crie um, primeiro crie um arquivo que conterá a função a ser plotada, por exemplo com o nome

arquivo que conterá a função a ser plotada, por exemplo com o nome fofx.mfofx.m

function y = fofx(x) function y = fofx(x) y =

y = cos(tan(pi*xcos(tan(pi*x));));

Agora basta passar o nome da função como argumento de

Agora basta passar o nome da função como argumento de

 fplot.

 fplot.

»» fplot('fofx',[0 1], 25,20,10)fplot('fofx',[0 1], 25,20,10)

Resulta, Resulta,

(37)

0 0 00..22 00..44 00..66 00..88 11 -1 -1 -0.8 -0.8 -0.6 -0.6 -0.4 -0.4 -0.2 -0.2 0 0 0.2 0.2 0.4 0.4 0.6 0.6 0.8 0.8 1 1 y = cos(tan(pi*x))y = cos(tan(pi*x)) Gráficos 3-D Gráficos 3-D

O MATLAB oferece uma variedade de funções para a visualização de O MATLAB oferece uma variedade de funções para a visualização de dados em 3-D, conforme sumarizado pelas funções a seguir. Contudo, não dados em 3-D, conforme sumarizado pelas funções a seguir. Contudo, não faremos um

faremos um detalhamento, detalhamento, visto visto que o que o assunto é assunto é muito muito longo e longo e poucopouco interessante para os objetivos iniciais deste trabalho.

interessante para os objetivos iniciais deste trabalho.

•• plot3plot3 - plota linhas e pontos em 3-D.- plota linhas e pontos em 3-D.

•• contour, contour3contour, contour3 - plotagem de contornos- plotagem de contornos

•• pcolorpcolor - desenha uma matriz retangular de células cujas cores- desenha uma matriz retangular de células cujas cores são determinadas pelos elementos da matriz.

são determinadas pelos elementos da matriz.

•• imageimage - mostra uma matriz como uma imagem mapeando os- mostra uma matriz como uma imagem mapeando os elementos da matriz para o mapa de cor

elementos da matriz para o mapa de cores atuais.es atuais.

•• mesh, meshc, meshzmesh, meshc, meshz - cria uma perspectiva em 3-D dos- cria uma perspectiva em 3-D dos elementos da matriz.

elementos da matriz.

•• fill3fill3 - cria um polígono 3-D e preenche com uma cor sólida ou- cria um polígono 3-D e preenche com uma cor sólida ou interpola cores.

interpola cores.

•• zlabelzlabel- cria um- cria um labellabel para o eixo z.para o eixo z.

•• clabelclabel- adiciona um- adiciona um labellabel à plotagem de contorno.à plotagem de contorno.

•• viewview- determina o ponto de visualização atual.- determina o ponto de visualização atual. •• viewmtxviewmtx- calcula uma transformação 4x4.- calcula uma transformação 4x4.

Referências

Documentos relacionados

Com a diversidade de instituições de ensino superior a escolha por parte dos acadêmicos se tornou mais difícil, então a qualificação nas instituições se

Ao selecionar um dos nós base da árvore que surge no painel esquerdo, é apresentado no painel direito os painéis de gestão de datacenter - Figura 2.53. Neles é possível gerir as

O Departamento de Controle de Qualidade é o responsável pela revisão dos resultados de testes e da documentação pertinente ao produto (determinação de componentes / materiais,

comprovadamente integrante do quadro da licitante. d.2) Caso haja substituição do profissional, tal substituição deverá ser aprovada pela Divisão de Estudos e Projetos do

O modelo integrado para competitividade inclui como fatores que impactam a competitividade no turismo os recursos disponíveis de fontes naturais, bens culturais e itens

Para testar as hipóteses propostas no modelo operacional utilizamos uma amostra de empresas portuguesas, delimitando o estudo empírico a empresas que

Desenhado a partir dos recentes desenvolvimento teóricos e empíricos no campo da psicologia positiva e do comportamento organizacional positivo, a presente

Como irá trabalhar com JavaServer Faces voltado para um container compatível com a tecnologia Java EE 5, você deverá baixar a versão JSF 1.2, a utilizada nesse tutorial.. Ao baixar