Matlab
Matlab
&
&
Simulink
Simulink
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.
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.
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 99Elementos 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
»» 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
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 comandoetc., use o comando
whos
whos
..O Utilitário de
O comando
O comando
help
help
produz informaçãoproduz informação on-lineon-line da maioria dos tópicos doda maioria dos tópicos doMATLAB, 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 chamadoum 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áveisum arquivo qualquer. O exemplo a seguir salva as variáveis x x,, y y ee z z no arquivono arquivo
temp.mat temp.mat..
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 deo 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 comoo 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
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:
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:
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 (
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
> 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 deexemplo 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
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
eeall
all
são muito utilizadas em conjunto comsão muito utilizadas em conjunto com operadores lógicos. A funçãooperadores 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
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çadogera 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
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
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 ecolunas 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::
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
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
•• 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 nn é 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
»» 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
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
»» [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
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 emfreqüê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
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:»» 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 onome 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
»» 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 1111
=
=
−
−
−−
==
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
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+)')
--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çãolinha, 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.
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ê selecionahold 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,
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 quandoplot
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
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 desenhauma 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.
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
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,
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çãonecessá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 nomearquivo 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,
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.