Upload
anderson-martins
View
105
Download
1
Embed Size (px)
DESCRIPTION
This is a tutorial of Matlab
Citation preview
Curso de Matlab
Eng. Me. Márcio FerreiraUFRGS - Departamento de Eng. Química
Julho de 2006
Curso de MatlabEng. Márcio Ferreira 2
Cronograma
• Aula 1Introdução
HistóricoInterface (Janela, Botões)Arquitetura (Workspace, Toolbox, Funções)Funções de Ajuda (Helpdesk, Help, Lookfor)Funções (who, what, whos, clear)Demo
• Aula 2 Variáveis
Diretório de TrabalhoTipos de ArquivosFunções de Salvamento de Dados (save, diary, load)Funções Matemáticas
Curso de MatlabEng. Márcio Ferreira 3
Cronograma
• Aula 3Vetores
Polinômios (raízes, avaliação)EndereçamentoFunções de operação com vetores
• Aula 4Matrizes
DimensõesFunções de operação com MatrizesSistemas LinearesEstruturas de Dados
Curso de MatlabEng. Márcio Ferreira 4
Cronograma
• Aula 5Gráficos
Gráficos bidimensionaisGráficos tridimensionaisFunções de operação com gráficosEfeitos Gráficos
• Aula 6Controle de Fluxo
Operadoresfor endif elseif end
Curso de MatlabEng. Márcio Ferreira 5
Cronograma
• Aula 7Arquivos .m
M-filesCriação de funçõesdebug
• Aula 8Análise de Sinais
fftAjuste de CurvasInterpolação
• Aula 9Análise de Sinais
Excel LinkInterpolaçãoAutocorrelaçãoExcel LinkImportação e exportação de ASCII
Curso de MatlabEng. Márcio Ferreira 6
Cronograma
• Aula 10Interfaces Gráficas
Apresentação do GUIDEElaboração de interfaces
• Tópicos EspeciaisTópicos Especiais
Otimização sem restriçõesOtimização com restriçõesProgramação LinearProgramação QuadráticaIntegraçãoMatemática Simbólica
Curso de MatlabEng. Márcio Ferreira 7
Login no Computador
• Login nos computadores da Sala Braskemusername: cursopassword: dequi2006
• Iniciar o MatlabProgramas MatlabMatlab 5.3
Curso de MatlabEng. Márcio Ferreira 8
Aula 1 - Introdução
• HistóricoMATLAB – Laboratório de Matrizes
1970 – Universidade do Novo México, baseado em rotinas de FORTRAN
Curso de MatlabEng. Márcio Ferreira 9
Aula 1 - Introdução
• HistóricoFunções de alto nível
(linguagem mais compreensível)
Análise de dados
Gráficos
Aplicações e Interfaces GUI
Modelagem e Simulação
Cálculos Matemáticos
Curso de MatlabEng. Márcio Ferreira 10
Aula 1 - Introdução
• Histórico
Mais de 40 anos de pesquisa e desenvolvimento de funções matemáticas, a partir do trabalho de centenas de cientistas de diferentes áreas.
Ao contrário de linguagens clássicas como C e Fortran, no ambiente MATLAB o usuário não se preocupa com:
declaração de variáveis, alocação de memória, utilização de ponteirosoutras tarefas de rotina.
Curso de MatlabEng. Márcio Ferreira 11
Aula 1 - Introdução
• Histórico
Campo gigantesco de aplicabilidade de recursos computacionais em áreas fora da engenharia.
Medicina: Diagnóstico de câncer de cordas vocais utilizando redes neurais. Análise de cardiopatias através da análise de freqüências, inteligência artificial auxiliando nos diagnósticos...
Biologia: Modelos de ciclos de vida de bactérias, ciclos de temperatura...
Ed. Física: Análise da mecânica dos movimentos, tratamento de dados, análise de gráficos de tendências...
Curso de MatlabEng. Márcio Ferreira 12
Aula 1 - Introdução
• Interface
Barra PadrãoBarra de Ferramentas
Workspace
Linha de Comando
Curso de MatlabEng. Márcio Ferreira 13
Aula 1 - Introdução
• Arquitetura
Editor
Simulink
Toolbox
Gráficos e Interfaces
Curso de MatlabEng. Márcio Ferreira 14
Aula 1 - Introdução
• Toolboxes••Data Data AcquisitionAcquisition ToolboxToolbox RefRef..
••Financial Financial ToolboxToolbox
••FrequencyFrequency DomainDomain IdentificationIdentification ToolboxToolbox
••GARCH GARCH ToolboxToolbox
••ImageImage ProcessingProcessing ToolboxToolbox RefRef..
••Neural Neural NetworksNetworks ToolboxToolbox RefRef..
••OptimizationOptimization ToolboxToolbox RefRef..
••PartialPartial DifferentialDifferential EquationsEquations (PDE) (PDE)
••SignalSignal ProcessingProcessing ToolboxToolbox RefRef..
••SplineSpline ToolboxToolbox RefRef..
••StatisticsStatistics ToolboxToolbox RefRef..
••SymbolicSymbolic MathMath ToolboxToolbox RefRef..
••SystemSystem IdentificationIdentification ToolboxToolbox RefRef..
••WaveletWavelet ToolboxToolbox RefRef..
C:C:\\MatlabMatlab\\toolboxtoolbox
As Toolboxes são diretórios quecontém funções agrupadas pordiferentes tipos ou objetivos.
(Análogo a uma caixa de ferramentas)
As Toolboxes permitem quevocê “se apoie nos ombros”dos cientistas mais famososdo mundo em cada área.”
Curso de MatlabEng. Márcio Ferreira 15
9%
36% 55%
Ajuda e Tutoriais
Toolbox e Funções
EXE
Aula 1 - Introdução
• Funções de AjudaA AJUDA do MATLAB é extremamente útil e indispensável no seu uso.
9% Programas e Executáveis36% Toolboxes e Funções55% de Arquivos de Ajuda e Tutoriais
A ajuda do Matlab, bem como seus guias de referência, são bastante completos e apresentam o conteúdo de forma didática e compreensível, através de exemplos práticos.
Curso de MatlabEng. Márcio Ferreira 16
Aula 1 - Introdução
• Funções de AjudaA AJUDA do MATLAB é extremamente útil e indispensável no seu uso.
»» helpdeskhelpdesk: Ajuda para todas as funções do Matlab com exemplos.
»» helpwinhelpwin: Janela de ajuda parecida com helpdeskhelpdesk, só que mais rápida.
»» helphelp: Ajuda para os tópicos separados por assunto no workspace
»» helphelp <fun<funçção>ão>: Ajuda para afunção especificada.
»» lookforlookfor:: Procura por uma função desconhecida
aula01a.maula01a.m
Usem o
Usem o help
help!!!!!!
Curso de MatlabEng. Márcio Ferreira 17
Aula 1 - Introdução
• Funções de Ajuda
» help sqrt (Comando)
SQRT Square root. (Descrição da função)SQRT(X) is the square root of the elements of X.
Complexresults are produced if X is not positive.
(Sintaxe da Função)
See also SQRTM. (Funções similares)
Overloaded methodshelp sym/sqrt.m
»» helphelp sqrtsqrt (Comando)(Comando)
SQRT SQRT SquareSquare rootroot.. (Descri(Descriçção da funão da funçção)ão)SQRT(X) is SQRT(X) is thethe squaresquare rootroot ofof thethe elementselements ofof X. X.
ComplexComplexresultsresults are are producedproduced ifif X is X is notnot positive. positive.
(Sintaxe da Fun(Sintaxe da Funçção)ão)
SeeSee alsoalso SQRTM.SQRTM. (Fun(Funçções similares)ões similares)
OverloadedOverloaded methodsmethodshelphelp symsym//sqrtsqrt.m.m
Usem o
Usem o help
help!!!!!!
Curso de MatlabEng. Márcio Ferreira 18
Aula 1 - Introdução
• Funções de Ajuda Usem o
Usem o help
help!!!!!!
A caixa de texto “Go to MatlabFunction” permite a busca imediata da função procurada, com exemplos, referências e comentários bastante completos sobre ela.
» helpdesk»» helpdeskhelpdesk
Curso de MatlabEng. Márcio Ferreira 19
Aula 1 - Introdução
Variáveis: Qualquer nome que guarda um valor ou número. num_studentsnum_students = 25= 25
Maiúsculas são diferentes de minúsculas
Não são permitidos espaços, acentos nem ç
Números: Valores representados no matlab com 16 dígitos significativos no intervalo de 1*10E-308 até 1*10E+308
Curso de MatlabEng. Márcio Ferreira 20
Aula 1 - Introdução
• ÁlgebraAs principais funções matemáticas são apresentadas na tabela a seguir:
++-- Soma Diminuição
//** Divisão Multiplicação
^ ^ Potência
.*.* Multiplicação ponto a ponto
( )( ) Parênteses
[ ][ ] Colchetes
{}{} Chaves
.. Ponto decimal
...... Continução de comando
%% Comentário
'' Transposta
Curso de MatlabEng. Márcio Ferreira 21
Aula 1 - Introdução
• Álgebra
» -5/(4.8+5.32)^2ans =
-0.0488» (3+4i)*(3-4i)ans =
25» cos(pi/2)ans =6.1230e-017
» exp(acos(0.3))ans =
3.5470
»» --5/(4.8+5.32)^25/(4.8+5.32)^2ansans ==
--0.04880.0488»» (3+4i)*(3(3+4i)*(3--4i)4i)ansans ==
2525»» cos(pi/2)cos(pi/2)ansans ==6.1230e6.1230e--017017
»» expexp((acosacos(0.3))(0.3))ansans ==
3.54703.5470
» a = 2;» b = 5;» a^bans =
32x = 5/2*pi;» y = sin(x)y =
1» z = asin(y)z =
1.5708
»» a = 2;a = 2;»» b = 5;b = 5;»» a^ba^bansans = =
3232x = 5/2*pi;x = 5/2*pi;»» y = y = sinsin(x)(x)y = y =
11»» z = z = asinasin(y)(y)z = z =
1.57081.5708
‘ ; ’ inibe exibição doresultado
Resultado éatribuído a ‘ans’ caso um nome não for especificado
Curso de MatlabEng. Márcio Ferreira 22
Aula 1 - Introdução
• Álgebra aula01c.maula01c.m
aula01d.maula01d.m
» 1+3
» 4/2
» 3*7-1
» (4/3)/(5/2)
» 2^2
» clc
» 1-3/45.6
» 4/2^6
» 3*7-1/(45-3)
» (4/3)/(5/2)
»» 1+31+3
»» 4/24/2
»» 3*73*7--11
»» (4/3)/(5/2)(4/3)/(5/2)
»» 2^22^2
»» clcclc
»» 11--3/45.63/45.6
»» 4/2^64/2^6
»» 3*73*7--1/(451/(45--3)3)
»» (4/3)/(5/2)(4/3)/(5/2)
» a = 1
» b = 2
» a+b
» 3*a
» c = a/b
» c^b
» d = (a+a)*b
» d-b/2
» c^b-68.6598
» d = (a+b)^b
»» a = 1a = 1
»» b = 2b = 2
»» a+ba+b
»» 3*a3*a
»» c = a/bc = a/b
»» c^bc^b
»» d = (a+a)*bd = (a+a)*b
»» dd--b/2b/2
»» c^bc^b--68.659868.6598
»» d = (a+b)^bd = (a+b)^b
Curso de MatlabEng. Márcio Ferreira 23
Aula 1 - Introdução
• Álgebra
•• ansans : resposta mais recente. •• epseps : precisão numérica corrente. Ex: 2.2204e-016.•• realmaxrealmax : maior número real positivo. Ex:1.7977e+308. •• realminrealmin : menor número real positivo.Ex:2.2251e-308.•• pipi : 3.1415926535897....•• i, ji, j : parte imaginária de números complexos.•• infinf : infinito. Ex: 1 / 0.•• NaNNaN : “not a number”.
•• . . .. . . : indica que o comando continua na próxima•• ; ; : no final da expressão inibe ‘eco’ na tela, no meio da
definição de matriz, é delimitador de linha.
aula01e.maula01e.m
aula01f.maula01f.m
Curso de MatlabEng. Márcio Ferreira 24
Aula 1 - Introdução
• Demo aula01b.maula01b.m
Curso de MatlabEng. Márcio Ferreira 25
Aula 1 - Introdução
• Exercícios
• Leitura ComplementarC:\MATLABR11\help\pdf_doc\matlab\learningmatlab.pdf
» type exercicios_01.txt»» typetype exercicios_01.txtexercicios_01.txt
Curso de MatlabEng. Márcio Ferreira 26
Aula 2 - Variáveis
• Diretório de TrabalhoÉ o diretório onde se encontram as funções que se deseja utilizar ou onde se deseja salvar as funções ou arquivos criados na sessão.
» cdcd E:E:\\TempTemp :: Torna o diretório especificado o diretório de trabalho.
» addpathaddpath : adiciona um ou mais diretórios à lista de diretórios de trabalho.
aula02a.maula02a.m
SEMPRE DEFINA O DIRETÓRIO DE TRABALHO AO INÍCIAR DO USO DO MATLAB.
Curso de MatlabEng. Márcio Ferreira 27
Aula 2 - Variáveis
• Tipos de Arquivos
Arquivos .m.m podem ser editados com o Editor ou qualquer editor de textos.
Arquivos ..matmat são binários e podem ser editados apenas com o Matlab.
pcodepcode((‘‘funfunççãoqualquerãoqualquer.m.m’’))
Proteção de código para arquivos .m. Evita edição e visualização do código.
Curso de MatlabEng. Márcio Ferreira 28
Aula 2 - Variáveis
• Funções de Verificação de Variáveis
» whowho: Lista as variáveis existentes no workspace
» whoswhos: Além de listar informa o tamanho e a classe
» whatwhat: Informa todos os arquivos presentes no diretório de trabalho
» clearclear allall: Apaga as variáveis existentes no workspace.
aula02b.maula02b.m
Usem o
Usem o help
help!!!!!!
Curso de MatlabEng. Márcio Ferreira 29
Aula 2 - Variáveis
• Funções de Salvamento de Dados
» savesave <nome> <var1> <var2><nome> <var1> <var2>: Salva as variáveis do workspace no arquivo nome.mat no diretório de trabalho.
» loadload <nome><nome>: Carrega as variáveis salvas do arquivo nome.mat
» diarydiary: Salva todos os comandos digitados no Workspaceem um arquivo de texto.
» diarydiary offoff: Encerra a gravação dos comandos do Workspace.
Usem o
Usem o help
help!!!!!!
Curso de MatlabEng. Márcio Ferreira 30
Aula 2 - Variáveis
• Funções de Salvamento de Dados aula02c.maula02c.m
» cd d:\temp
» a=1
» b=2
» whos
» save nome
» clear all
» whos
» load nome
» whos
»» cdcd d:d:\\temptemp
»» a=1a=1
»» b=2b=2
»» whoswhos
»» savesave nome
»» clearclear allall
»» whoswhos
»» loadload nome
»» whoswhos
Curso de MatlabEng. Márcio Ferreira 31
Aula 2 - Variáveis
• Funções MatemáticasAs principais funções matemáticas são apresentadas na tabela a seguir:Trigonométricas
sin, sinh Sine and hyperbolic sinecos, cosh Cosine and hyperbolic cosinetan, tanh Tangent and hyperbolic tangent
Reaisabsabs Absolute Valuesqrtsqrt Square rootexpexp Exponentialloglog Natural logarithmlog2log2 Base 2 logarithmlog10log10 Common (base 10) logarithm
Arredondamentofixfix Round towards zero floorfloor Round towards minus infinityroundround Round to nearest integerceilceil Round toward infinity
aula02d.maula02d.m
» a = sin(3)
» b = abs(-3)
» sqrt(4)
» c = round(a)
»» a = sin(3)a = sin(3)
»» b = abs(b = abs(--3)3)
»» sqrt(4)sqrt(4)
»» c = c = round(around(a))
Usem o
Usem o help
help!!!!!!
Curso de MatlabEng. Márcio Ferreira 32
Aula 2 - Variáveis
• Outras Funções
calendardatetic; tocmkdirwarndlg
Usem o
Usem o help
help!!!!!!
Curso de MatlabEng. Márcio Ferreira 33
Aula 2 - Variáveis
• Exercícios
» type exercicios_02.txt»» typetype exercicios_02.txtexercicios_02.txt
Curso de MatlabEng. Márcio Ferreira 34
Aula 3 – Vetores
• PolinômiosOs polinômios são definidos como vetores no matlab
X^2+2*x+3 => [1 2 3]X^5+3*x+1 => [1 0 0 0 3 1]X^6+1 => [6 0 0 0 0 0 1]
As principais funções matemáticas são apresentadas na tabela a seguir:
convconv multiplicação de polinômiospolypoly Polynomial with specified rootspolyderpolyder Polynomial derivativepolyfitpolyfit Polynomial curve fittingpolyvalpolyval Polynomial evaluationrootsroots Polynomial roots
Usem o
Usem o help
help!!!!!!
Curso de MatlabEng. Márcio Ferreira 35
Aula 3 – Vetores
• Polinômios
132 2 +⋅+⋅ xx33 3 ++⋅ xx
aula03a.maula03a.m
» a = [2 3 1]
» b = [3 0 1 3]
» conv(a,b)
» d = polyder(a)
» d = polyval(a,2)
» e = roots(a)
»» a = [2 3 1]a = [2 3 1]
»» b = [3 0 1 3]b = [3 0 1 3]
»» convconv(a,b)(a,b)
»» d = d = polyderpolyder(a)(a)
»» d = d = polyvalpolyval(a,2)(a,2)
»» e = e = rootsroots(a)(a)
Curso de MatlabEng. Márcio Ferreira 36
Aula 3 – Vetores
• Endereçamento
Exemplo 1
»» A = [1 3 6 9 12] A = [1 3 6 9 12]
»» A(1)A(1)
[1]
»» A(4)A(4)
[9]
»» A(1:3)A(1:3)
[1 3 6]
»» A(:)A(:)
[1 3 6 9 12]
Exemplo 2
»» B = [10 15 20 25 30 35]B = [10 15 20 25 30 35]
»» B(3:B(3:endend))
[20 25 30 35]
»» B(B(endend))
[35]
»» B(B(endend--1:1:endend))
[30 35]
»» B(B(sizesize(B,2)(B,2)--3)3)
[20]
aula03b.maula03b.m
Curso de MatlabEng. Márcio Ferreira 37
Aula 3 – Vetores
• Endereçamento
Exemplo 3 - Vetores com espaçamento constante
»» A = 1:.1:10 A = 1:.1:10
Cria um vetor iniciando em 1 e terminando em 10 com incremento de 0.1 unidade
»» AA
[1 1.1 1.2 1.3 ...9.8 9.9 10]
Exemplo 4 - Vetores com espaçamento constante»» A = 1:10 A = 1:10
»» AA[1 2 3 4 5 6 7 8 9 10]
aula03c.maula03c.m
Curso de MatlabEng. Márcio Ferreira 38
Aula 3 – Vetores
• Funções de Operação com Vetorescumprodcumprod Cumulative productcumsumcumsum Cumulative summaxmax Maximum elements of an arraymeanmean Average or mean value of arraysmedianmedian Median value of arraysminmin Minimum elements of an arrayprodprod Product of array elementssortsort Sort elements in ascending orderstdstd Standard deviationsumsum Sum of array elementsvarvar Variancecorrcoefcorrcoef Correlation coefficients covcov Covariance matrix convconv Convolution and polynomial multiplication conv2conv2 Two-dimensional convolution ‘‘ Transposto
Usem o
Usem o help
help!!!!!!
aula03f.maula03f.m
Curso de MatlabEng. Márcio Ferreira 39
Aula 3 – Vetores
• Funções de Operação com Vetores aula03d.maula03d.m
» B = [10 15 20 25 30 35]
» m = max(B)
» mean(B)
» soma = sum(B)
» variância = var(B)
» d = [1.5 9.8 45 0.147 25.6]
» cresce = sort(d)
»» B = [10 15 20 25 30 35] B = [10 15 20 25 30 35]
»» m = m = maxmax(B)(B)
»» meanmean(B)(B)
»» soma = soma = sumsum(B)(B)
»» variância = var(B)variância = var(B)
»» d = [1.5 9.8 45 0.147 25.6]d = [1.5 9.8 45 0.147 25.6]
»» cresce = cresce = sortsort(d)(d)
Curso de MatlabEng. Márcio Ferreira 40
Aula 3 – Vetores
• Concatenação de Vetores aula03e.maula03e.m
» B = [10 15 20 25 30 35]
» K = [1 2 3]
» M = [B K]
» N = [K B]
% Vetores Coluna
» P = [10; 15; 20; 25; 30; 35]
» J = [1; 2; 3]
» W = [B; K]
» Z = [K; B]
»» B = [10 15 20 25 30 35] B = [10 15 20 25 30 35]
»» K = [1 2 3]K = [1 2 3]
»» M = [B K]M = [B K]
»» N = [K B]N = [K B]
% Vetores Coluna% Vetores Coluna
»» P = [10; 15; 20; 25; 30; 35] P = [10; 15; 20; 25; 30; 35]
»» J = [1; 2; 3]J = [1; 2; 3]
»» W = [B; K]W = [B; K]
»» Z = [K; B]Z = [K; B]
Curso de MatlabEng. Márcio Ferreira 41
Aula 3 – Vetores
• Exercícios
» type exercicios_03.txt»» typetype exercicios_03.txtexercicios_03.txt
Curso de MatlabEng. Márcio Ferreira 42
Aula 4 –Matrizes
• DimensõesUma Matriz no Matlab é sempre da forma:
A = [a11 a12 a13 a14; a21 a22 a23 a24 ]A = [a11 a12 a13 a14; a21 a22 a23 a24 ]O “;” separa as linhas da matriz
»» A = [1 2 3 4; 5 6 7 8; 9 10 11 12] A = [1 2 3 4; 5 6 7 8; 9 10 11 12]
»» A(1,1)A(1,1)
[1][1]
»» A(1:3,1:2)A(1:3,1:2)
[1 2 ;5 6; 9 10]
»» A(:,2)A(:,2)
[2; 6; 10]
aula04a.maula04a.m
Curso de MatlabEng. Márcio Ferreira 43
Aula 4 –Matrizes
• Dimensões
4 10 1 6 2
8 1.2 9 4 25
7.2 5 7 1 11
0 0.5 4 5 56
23 83 13 0 10
1
2
3
4
5
1 2 3 4 51 6 11 16 21
2 7 12 17 22
3 8 13 18 23
4 9 14 19 24
5 10 15 20 25
A =
A(3,1)A(3)
A(1:5,5) A(:,5)A(21:end)'
A([4,5],[2,3])A([9 14;10 15])
(:)(:) especifica TODOS elementos‘‘endend’’ especifica o valor de índice máximo
Curso de MatlabEng. Márcio Ferreira 44
Aula 4 –Matrizes
• Funções de Operação com Matrizes
eyeeye Identity matrix findfind Localização de valores em Matrizes ou vetoreslinspacelinspace Generate linearly spaced vectors logspacelogspace Generate logarithmically spaced vectors onesones Create an array of all ones randnrandn Normally distributed random numbers and arrays sizesize Dimensão de Vetores ou Matrizeszeros zeros Create an array of all zeros : : (colon) Regularly spaced vector catcat Concatenate arrays diagdiag Diagonal matrices and diagonals of a matrix
Usem o
Usem o help
help!!!!!!
aula04e.maula04e.m
Curso de MatlabEng. Márcio Ferreira 45
Aula 4 –Matrizes
• Funções de Operação com Matrizes aula04b.maula04b.m
» A = [1 2 3 4; 5 6 7 8; 9 10 11 12]
» dim = size(A)
» diagonal = diag(A)
» aleatorios = randn(10,10)
» find(A>5)
» A(k)
»» A = [1 2 3 4; 5 6 7 8; 9 10 11 12] A = [1 2 3 4; 5 6 7 8; 9 10 11 12]
»» dimdim = = sizesize(A)(A)
»» diagonal = diagonal = diagdiag(A)(A)
»» aleatoriosaleatorios = = randnrandn(10,10)(10,10)
»» findfind(A>5)(A>5)
»» A(k)A(k)
Curso de MatlabEng. Márcio Ferreira 46
Aula 4 –Matrizes
• Funções de Operação com MatrizesMultiplicação matricial e multiplicação ponto a ponto
» a=[1 2 3;4 5 6;7 8 9]» b1 = a*a» b2 = a.*a
»» a=[1 2 3;4 5 6;7 8 9]a=[1 2 3;4 5 6;7 8 9]»» b1 = a*ab1 = a*a»» b2 = a.*ab2 = a.*a
MatricialMatricialb1 =b1 =
30 36 4230 36 4266 81 9666 81 96102 126 150102 126 150
Ponto a PontoPonto a Pontob2 =b2 =
1 4 91 4 916 25 3616 25 3649 64 8149 64 81
Curso de MatlabEng. Márcio Ferreira 47
Aula 4 –Matrizes
• Concatenação de Matrizes
» A = [1 2 3;4 5 6;7 8 9]» B = [10; 20; 30]» C = [40; 50; 60]» F = [A B C]» G = [A; B'; C']» H = [A F]
»» A = [1 2 3;4 5 6;7 8 9]A = [1 2 3;4 5 6;7 8 9]»» B = [10; 20; 30]B = [10; 20; 30]»» C = [40; 50; 60]C = [40; 50; 60]»» F = [A B C]F = [A B C]»» G = [A; B'; C']G = [A; B'; C']»» H = [A F]H = [A F]
Curso de MatlabEng. Márcio Ferreira 48
Aula 4 –Matrizes
• Sistemas LinearesResolução de Sistemas de Equações
3987
2654
1321
*********
bzayaxabzayaxabzayaxa
=++=++=++
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
3
2
1
987
654
321
*bbb
zyx
aaaaaaaaa
BXA =*BAX *1−=
22513=⋅+⋅=+⋅+yx
yx
aula04c.maula04c.m
» A = [1 3; 5 2]
» B = [1; 2]
» x = inv(A)*B
»» A = [1 3; 5 2] A = [1 3; 5 2]
»» B = [1; 2]B = [1; 2]
»» x = x = invinv(A)*B(A)*B
Curso de MatlabEng. Márcio Ferreira 49
Aula 4 –Matrizes
• Sistemas LinearesResolução de Sistemas de Equações
» A = [-1 1 2; 3 -1 1;-1 3 4];» B = [2;6;4];» x = A\Bx =
1.0000-1.00002.0000
»» A = [A = [--1 1 2; 3 1 1 2; 3 --1 1;1 1;--1 3 4];1 3 4];»» B = [2;6;4];B = [2;6;4];»» x = Ax = A\\BBx =x =
1.00001.0000--1.00001.00002.00002.0000
-x1 + x2 + 2x3 = 23x1 - x2 + x3 = 6-x1 + 3x2 + 4x3 = 4
-1 banana + 1 limão + 2 laranjas = R$ 2,003 bananas - 1 limão + 1 laranja = R$ 6,00
-1 banana + 3 limões + 4laranjas = R$ 4,00
Preço da banana
Preço do Limão
Preço da Laranja
Curso de MatlabEng. Márcio Ferreira 50
Aula 4 –Matrizes
• EstruturasPodem ser utilizadas como um “Banco de Dados”.
Variável: Marcio
Variável utilizada para armazenar variáveis de tipos diferentes de uma forma estruturada. Utilizada por exemplo em Banco de dados com fácil acesso às informações.
aula04d.maula04d.m
» Marcio.sobrenome = 'Ferreira'» Marcio.idade = 28» Marcio.peso = 101» Marcio.altura = 1.94» indice = Marcio.peso / (Marcio.altura^2)
»» Marcio.sobrenome = 'Ferreira'Marcio.sobrenome = 'Ferreira'»» Marcio.idade = 28Marcio.idade = 28»» Marcio.peso = 101Marcio.peso = 101»» Marcio.altura = 1.94Marcio.altura = 1.94»» indiceindice = Marcio.peso / (Marcio.altura^2)= Marcio.peso / (Marcio.altura^2)
Curso de MatlabEng. Márcio Ferreira 51
Aula 4 –Matrizes
• Workspace Browser
O editor de variáveis do Matlab é um bom recurso para aprender sobre dimensão e indexação de matrizes e vetores.
Curso de MatlabEng. Márcio Ferreira 52
Aula 4 –Matrizes
• Exercícios
» type exercicios_04.txt»» typetype exercicios_04.txtexercicios_04.txt
Curso de MatlabEng. Márcio Ferreira 53
Aula 5 – Gráficos
• Gráficos BidimensionaisEspecificar: x-data e/ou y-dataEspecificar: cor, estilo de linha e símbolo marcador Sintaxe para gráfico com uma curva:
Sintaxe para gráfico com várias curvas:
» plot(x1, y1, 'clm1', x2, y2, 'clm2', ...)»» plotplot(x1, y1, 'clm1', x2, y2, 'clm2', ...)(x1, y1, 'clm1', x2, y2, 'clm2', ...)
» plot(xdata, ydata, 'color_linestyle_marker') »» plotplot((xdataxdata, , ydataydata, ', 'color_linestyle_markercolor_linestyle_marker')')
Curso de MatlabEng. Márcio Ferreira 54
Aula 5 – Gráficos
• Gráficos BidimensionaisColor Line Style Markery (yellow) - (solid) . (point)m (magenta) : (dotted) o (circle)c (cyan) -. (dashdot) x (x-mark)r (red) -- (dashed) + (plus)g (green) * (star)b (blue) s (square)w (white) d (diamond)k (black) h (hexagram)
p (pentagram)v (triangle down)> (triangle right)< (triangle left)^ (triangle up)
» plot(x,y,’r’);» plot(x,y,’k:’);» plot(x,y,’g*’);» plot(x,y,’mp’);
»» plot(x,yplot(x,y,,’’rr’’););»» plot(x,yplot(x,y,,’’k:k:’’););»» plot(x,yplot(x,y,,’’g*g*’’););»» plot(x,yplot(x,y,,’’mpmp’’););
Curso de MatlabEng. Márcio Ferreira 55
Aula 5 – Gráficos
• Gráficos Bidimensionais aula05a.maula05a.m
» x = [1:.1:10]; » y = sin(x);» figure(1)» plot(x,y)» figure(15)» bar(y)» dado = [10 50 40]» figure(3)» pie(dado)
»» x = [1:.1:10]; x = [1:.1:10]; »» y = y = sin(xsin(x););»» figure(1)figure(1)»» plot(x,yplot(x,y))»» figure(15)figure(15)»» bar(ybar(y))»» dado = [10 50 40]dado = [10 50 40]»» figure(3)figure(3)»» pie(dadopie(dado))
figurefigure cria uma nova figura embranco, com handle especificado, para plotar o gráfico.
Se figurefigure não for especificado, as figurascriadas possuem handle 1, 2, 3 e assim por diante.
Curso de MatlabEng. Márcio Ferreira 56
Aula 5 – Gráficos
• Gráficos Bidimensionaissubplot
»subplot(2,2,1); »plot(1:10)
»subplot(2,2,2)»x = 0:.1:2*pi;»plot(x,sin(x))
»subplot(2,2,3)»x = 0:.1:2*pi;»plot(x,exp(-x),'r')
»subplot(2,2,4)»plot(peaks)
»»subplotsubplot(2,2,1); (2,2,1); »»plotplot(1:10)(1:10)
»»subplotsubplot(2,2,2)(2,2,2)»»x = 0:.1:2*pi;x = 0:.1:2*pi;»»plotplot(x,(x,sinsin(x))(x))
»»subplotsubplot(2,2,3)(2,2,3)»»x = 0:.1:2*pi;x = 0:.1:2*pi;»»plotplot(x,(x,expexp((--x),x),''rr''))
»»subplotsubplot(2,2,4)(2,2,4)»»plotplot((peakspeaks))
aula05b.maula05b.m
Curso de MatlabEng. Márcio Ferreira 57
Aula 5 – Gráficos
• Gráficos Bidimensionais
Ícone paraliberar
edição datela do Gráfico
Ícone parainserir textono gráfico
Funções de zoom
Clicando duas vezesna área do gráfico, após liberá-lo paraedição, a janela de
edição é apresentadaClicando duasvezes na linhaedita-se suaspropriedades
Curso de MatlabEng. Márcio Ferreira 58
Aula 5 – Gráficos
• Gráficos Bidimensionais
•• holdhold onon ativa a preservação da figura
•• holdhold offoff desativa a preservação da figura
» x = 0:.1:2*pi;» y = sin(x);» plot(x,y,'b')» grid on» hold on» plot(x,exp(-x),'r:*')
»» x = 0:.1:2*pi;x = 0:.1:2*pi;»» y = y = sinsin(x);(x);»» plotplot(x,y,'b')(x,y,'b')»» gridgrid onon»» holdhold onon»» plotplot(x,(x,expexp((--x),'r:*')x),'r:*')
aula05c.maula05c.m
Curso de MatlabEng. Márcio Ferreira 59
Aula 5 – Gráficos
• Gráficos Bidimensionaisbar bar Vertical bar chartbarhbarh Horizontal bar charthisthist Plot histogramsholdhold Hold current graphloglogloglog Plot using log-log scalespie pie Pie plotplotplot Plot vectors or matrices. plotyyplotyy Gráfico com duas escalaspolarpolar Polar coordinate plotsemilogxsemilogx Semi-log scale plotsemilogysemilogy Semi-log scale plotsubplotsubplot Create axes in tiled positions
Usem o
Usem o help
help!!!!!!
aula05i.maula05i.m
Curso de MatlabEng. Márcio Ferreira 60
Aula 5 – Gráficos
• Exercício
1. Criar cos(10pt) e sin(10pt) para t = {0,0.5}, com cos() em linha verde sólida; sin() em linha preta pontilhada com marcadores quadrados.2. Legenda X “Tempo(seg)”, legenda Y “Resultado”, e título “Ondas de Transmissão”3. Texto descritivo da curva cos() - “Em fase”.4. Texto descritivo da curva sin() - “Quadratura”5. Eixo Y deve ser {-1.5,2}
Curso de MatlabEng. Márcio Ferreira 61
Aula 5 – Gráficos
• Exercício
» t = 0:.01:.5;» plot(t,cos(10*pi*t),'g', t,sin(10*pi*t),'k:square');» title('Ondas de Transmissão');» xlabel('Tempo(Seg)');» ylabel('Resultado');» gtext('Em Fase');» gtext('Quadratura');» axis([0 0.5 -1.5 2]);
»» t = 0:.01:.5;t = 0:.01:.5;»» plotplot(t,cos(10*pi*t),'g', t,(t,cos(10*pi*t),'g', t,sinsin(10*pi*t),'k:(10*pi*t),'k:squaresquare');');»» titletitle('Ondas de Transmissão');('Ondas de Transmissão');»» xlabelxlabel('Tempo(('Tempo(SegSeg)');)');»» ylabelylabel('Resultado');('Resultado');»» gtextgtext('Em Fase');('Em Fase');»» gtextgtext('Quadratura');('Quadratura');»» axisaxis([0 0.5 ([0 0.5 --1.5 2]);1.5 2]);
• Posicione os textos ‘Em Fase’ e ‘Quadradura’ no gráfico.
aula05d.maula05d.m
Curso de MatlabEng. Márcio Ferreira 62
Aula 5 – Gráficos
• Configuração das opções de plotagem
» title ('PID','FontSize',14,'FontWeight','bold');» xlabel ('Tempo','FontSize',12,'FontWeight','bold');» ylabel ('SP & Nível','FontSize',12,'FontWeight','bold');» axis([0 t(end) 0 25]);» set(gca,'FontSize',12,'FontWeight','bold')
»» titletitle ('PID','('PID','FontSizeFontSize',14,'',14,'FontWeightFontWeight','','boldbold');');»» xlabelxlabel ('Tempo','('Tempo','FontSizeFontSize',12,'',12,'FontWeightFontWeight','','boldbold');');»» ylabelylabel ('SP & N('SP & Níível','vel','FontSizeFontSize',12,'',12,'FontWeightFontWeight','','boldbold');');»» axisaxis([0 t(([0 t(endend) 0 25]);) 0 25]);»» set(set(gcagca,','FontSizeFontSize',12,'',12,'FontWeightFontWeight','','boldbold')')
aula05d.maula05d.m
dica.mdica.m
Os parâmetros Fontsize e FontWeight utilizados noscomandos acima formatam o estilo da fonte utilizada no gráfico.
O parâmetro LineWidth, utilizado no comando plotplot, faz as linhas ficarem mais largas (veja exemplo aula05d)aula05d).
Curso de MatlabEng. Márcio Ferreira 63
Aula 5 – Gráficos
• Salvamento de figuras para inserir em documentos .doc ou outros
» h = figure(5)» x = [1:10];» plot(x,2*x);» saveas(5, 'figura1.bmp')
»» h = figure(5)h = figure(5)»» x = [1:10];x = [1:10];»» plotplot(x,2*x);(x,2*x);»» saveassaveas(5, '(5, 'figura1.bmpfigura1.bmp')')
aula05d.maula05d.m
Salva a figura plotada no handle “h” com o nome“figura1.bmp” no diretório de trabalho.
Usem o
Usem o help
help!!!!!!
Curso de MatlabEng. Márcio Ferreira 64
Aula 5 – Gráficos
• Gráficos Tridimensionais
bar3hbar3h Horizontal 3-D bar chartcomet3comet3 3-D comet plotplot3plot3 Plot lines and points in 3-D spacewaterfallwaterfall Waterfall plotcontourcontour Contour (level curves) plotmeshcmeshc Combination mesh/contourplotmeshmesh 3-D mesh with reference plane surfsurf 3-D shaded surface graphsurfcsurfc Combination surf/contourplotsurflsurfl 3-D shaded surface with lighting
Usem o
Usem o help
help!!!!!!
aula05j.maula05j.m
Curso de MatlabEng. Márcio Ferreira 65
Aula 5 – Gráficos
• Gráficos Tridimensionais aula05e.maula05e.m
» [X,Y] = meshgrid(-2:.2:2, -2:.2:2);» Z = X .* exp(-X.^2 - Y.^2);» meshc(Z)» surf(Z)
» t = 0:pi/50:10*pi;» plot3(sin(t),cos(t),t);
»» [X,Y] = [X,Y] = meshgridmeshgrid((--2:.2:2, 2:.2:2, --2:.2:2);2:.2:2);»» Z = X .* Z = X .* expexp((--X.^2 X.^2 -- Y.^2);Y.^2);»» meshcmeshc(Z)(Z)»» surf(Z)surf(Z)
»» t = 0:t = 0:pipi/50:10*/50:10*pipi;;»» plot3(plot3(sinsin(t),(t),coscos(t),t);(t),t);
Curso de MatlabEng. Márcio Ferreira 66
Aula 5 – Gráficos
• Gráficos Tridimensionaismesh
» x=-8:0.5:8;» y=x;» [X,Y]=meshgrid(x,y);» R=sqrt(X.^2 + Y.^2)+eps;» Z=sin(R)./R;» mesh(X,Y,Z)
»» x=x=--8:0.5:8;8:0.5:8;»» y=x;y=x;»» [X,Y]=[X,Y]=meshgridmeshgrid(x,y);(x,y);»» R=R=sqrtsqrt(X.^2 + Y.^2)+(X.^2 + Y.^2)+epseps;;»» Z=Z=sinsin(R)./R;(R)./R;»» meshmesh(X,Y,Z)(X,Y,Z)
• função meshgridmeshgrid : cria ‘matrizes malha’a partir de dois vetores.
aula05f.maula05f.m
Curso de MatlabEng. Márcio Ferreira 67
Aula 5 – Gráficos
• Gráficos Tridimensionaissurf
» x=-8:0.5:8;» y=x;» [X,Y]=meshgrid(x,y);» R=sqrt(X.^2 + Y.^2)+eps;» Z=sin(R)./R;» surf(X,Y,Z)» shading interp» colorbar
»» x=x=--8:0.5:8;8:0.5:8;»» y=x;y=x;»» [X,Y]=[X,Y]=meshgridmeshgrid(x,y);(x,y);»» R=R=sqrtsqrt(X.^2 + Y.^2)+(X.^2 + Y.^2)+epseps;;»» Z=Z=sinsin(R)./R;(R)./R;»» surf(X,Y,Z)surf(X,Y,Z)»» shadingshading interpinterp»» colorbarcolorbar
aula05f.maula05f.m
Curso de MatlabEng. Márcio Ferreira 68
Aula 5 – Gráficos
• Efeitos Gráficosclabelclabel Add contour labels to a contour plotgridgrid Grid lines for 2-D and 3-D plotsginputginput Copia local do clique com o mouse para o workspacegtextgtext Inserção com o mouse do texto na figuralegendlegend Graph legend for lines and patchestitletitle Titles for 2-D and 3-D plotsxlabelxlabel X-axis labels for 2-D and 3-D plotsylabelylabel Y-axis labels for 2-D and 3-D plotszlabelzlabel Z-axis labels for 3-D plotserrorbarerrorbar Plot graph with error barsparetopareto Pareto charscatterscatter Scatter plotscatter3scatter3 3-D scatter plotpolyareapolyarea Area of polygon
Usem o
Usem o help
help!!!!!!
Curso de MatlabEng. Márcio Ferreira 69
Aula 5 – Gráficos
• Efeitos Gráficos
• Gráficos comerciais
• Outros tipos
Curso de MatlabEng. Márcio Ferreira 70
Aula 5 – Gráficos
• Efeitos Gráficos% Isosurface, isocaps, coneplot, and streamlines of wind data
load windspd = sqrt(u.*u + v.*v + w.*w); p = patch(isosurface(x,y,z,spd, 40)); isonormals(x,y,z,spd, p) set(p, 'FaceColor', 'red', 'EdgeColor', 'none'); p2 = patch(isocaps(x,y,z,spd, 40)); set(p2, 'FaceColor', 'interp', 'EdgeColor', 'none') daspect([1 1 1]); [f verts] = reducepatch(isosurface(x,y,z,spd, 30), .2); h=coneplot(x,y,z,u,v,w,verts(:,1),verts(:,2),verts(:,3),2); set(h, 'FaceColor', 'cyan', 'EdgeColor', 'none'); [sx sy sz] = meshgrid(80, 20:10:50, 0:5:15); h2=streamline(x,y,z,u,v,w,sx,sy,sz); set(h2, 'Color', [.4 1 .4]); axis tight; box oncamproj perspective; camva(24); campos([165 -20 65]); camtarget([100 40 -5]) camlight left; lighting phongcolormap(jet)
% Isosurface, isocaps, coneplot, and streamlines of wind dataload windspd = sqrt(u.*u + v.*v + w.*w); p = patch(isosurface(x,y,z,spd, 40)); isonormals(x,y,z,spd, p) set(p, 'FaceColor', 'red', 'EdgeColor', 'none'); p2 = patch(isocaps(x,y,z,spd, 40)); set(p2, 'FaceColor', 'interp', 'EdgeColor', 'none') daspect([1 1 1]); [f verts] = reducepatch(isosurface(x,y,z,spd, 30), .2); h=coneplot(x,y,z,u,v,w,verts(:,1),verts(:,2),verts(:,3),2); set(h, 'FaceColor', 'cyan', 'EdgeColor', 'none'); [sx sy sz] = meshgrid(80, 20:10:50, 0:5:15); h2=streamline(x,y,z,u,v,w,sx,sy,sz); set(h2, 'Color', [.4 1 .4]); axis tight; box oncamproj perspective; camva(24); campos([165 -20 65]); camtarget([100 40 -5]) camlight left; lighting phongcolormap(jet)
aula05g.maula05g.m
Curso de MatlabEng. Márcio Ferreira 71
Aula 5 – Gráficos
• Efeitos Gráficosginput: captura o ponto de cliquedo mouse na figura e exibe no workspace (depois de selecionar os pontos clique enter).
aula05h.maula05h.m
» x = [1:.1:100]» y = x.^2» plot(x,y)» legend('Nome da linha')» xlabel('Nome do eixo X')» ginput
»» x = [1:.1:100]x = [1:.1:100]»» y = x.^2y = x.^2»» plotplot(x,y)(x,y)»» legendlegend('Nome da linha')('Nome da linha')»» xlabelxlabel('Nome do eixo X')('Nome do eixo X')»» ginputginput
Curso de MatlabEng. Márcio Ferreira 72
Aula 5 – Gráficos
• Exercícios
• Leitura ComplementarC:\MATLABR11\help\pdf_doc\matlab\graphg.pdfC:\MATLABR11\help\techdoc\plotedit.chm
» type exercicios_05.txt»» typetype exercicios_05.txtexercicios_05.txt
Curso de MatlabEng. Márcio Ferreira 73
Aula 6 – Controle de Fluxo
• Operadores
>> Maior que<< Menor que<=<= Menor ou igual a>=>= maior ou igual a==== Igual a~=~= Diferente de
As expressões retornam verdadeiro ou falso para as comparações realizadas.
1 significa verdadeiro
0 significa falso
»» 1>21>2 0
»» 2==22==2 1
»» 3<63<6 1
»» 4~=44~=4 0
»» 3>=33>=3 1
»» 2<=32<=3 1
»» 3~=63~=6 1
»» 4==54==5 0
aula06a.maula06a.m
Curso de MatlabEng. Márcio Ferreira 74
Aula 6 – Controle de Fluxo
• for end
for variable = expression
statement
...
statement
end
Exemplo:
n=10n=10
for i = 1:nfor i = 1:n
for j = 1:nfor j = 1:n
a(i,j) = i+j;a(i,j) = i+j;
endend
endend
aula06b.maula06b.m
Curso de MatlabEng. Márcio Ferreira 75
Aula 6 – Controle de Fluxo
• if elseif end
if expression1if expression1
statements statements
elseifelseif expression2expression2
statements statements
elseifelseif expression2expression2
statements statements
endend
Exemplo:
a=1;a=1;
ifif a == 1a == 1
display('a display('a éé igual a 1')igual a 1')
elseifelseif a == 2a == 2
display('a display('a éé igual a 2')igual a 2')
elseelse
display('a=outra coisa')display('a=outra coisa')
endend
aula06c.maula06c.m
Curso de MatlabEng. Márcio Ferreira 76
Aula 6 – Controle de Fluxo
• Exercícios
» type exercicios_06.txt»» typetype exercicios_06.txtexercicios_06.txt
Curso de MatlabEng. Márcio Ferreira 77
Aula 7 – Arquivos .m
• m-fileseditedit: Função para edição de m-files
M-files são arquivos de texto com sequênciasde comandos do Matlab que serão avaliadas ao executar o arquivo no workspace.
Curso de MatlabEng. Márcio Ferreira 78
Aula 7 – Arquivos .m
• m-files
» edit»» editedit
Curso de MatlabEng. Márcio Ferreira 79
Aula 7 – Arquivos .m
• Criação de Funções
function [y] = mean (x)% MEAN Average or mean value.% For vectors, MEAN(x) returns the mean value.% For matrices, MEAN(x) is a row vector% containing the mean value of each column.[m,n] = size(x);if m == 1
m = n;endy = sum(x)/m;
function [y] = mean (x)% MEAN Average or mean value.% For vectors, MEAN(x) returns the mean value.% For matrices, MEAN(x) is a row vector% containing the mean value of each column.[m,n] = size(x);if m == 1
m = n;endy = sum(x)/m;
Keyword: function Nome da função (mesmo nome do m-file)Argumento(s) de saída Argumento(s)
de entrada
Texto deHelp On-Line
Código dafunção
»output_value = mean(input_value)
media.mmedia.m
Curso de MatlabEng. Márcio Ferreira 80
Aula 7 – Arquivos .m
cabecalhocabecalho.m.m
%About: % Cabeçalho padrão para arquivos .m. Aqui vai a descrição da ajuda.%Syntax: [x,y] = padrão(k)%Inputs:% k:entrada%Outputs:% x:saída 1 y:saída 2%----------------------------------------------------------------------
%----------------------------------------------------------------------% Copyright (c) 2005 by LACIP-DEQUI-UFRGS <<http://www.enq.ufrgs.br>>% Author: Marcio Ferreira E-Mail: [email protected]% $Revision: 1.00 $ $Date: 15/02/2005 19:28:39 $%----------------------------------------------------------------------
function [x,y] = padrão(k)x = k*2;y = 2*x;
%About: % Cabeçalho padrão para arquivos .m. Aqui vai a descrição da ajuda.%Syntax: [x,y] = padrão(k)%Inputs:% k:entrada%Outputs:% x:saída 1 y:saída 2%----------------------------------------------------------------------
%----------------------------------------------------------------------% Copyright (c) 2005 by LACIP-DEQUI-UFRGS <<http://www.enq.ufrgs.br>>% Author: Marcio Ferreira E-Mail: [email protected]% $Revision: 1.00 $ $Date: 15/02/2005 19:28:39 $%----------------------------------------------------------------------
function [x,y] = padrão(k)x = k*2;y = 2*x;
• Criação de Funções
Curso de MatlabEng. Márcio Ferreira 81
Aula 7 – Arquivos .m
• Criação de Funções
media.mmedia.m
dados
média
% Função para cálculo da média % Sintaxe:% [m] = media(dados)% Entradas: Dados = vetor% Saídas: m = média% $Revision: 1.00 $ $Date: 01/07/2006
function m = media(dados)m = sum(dados)/size(dados,2)
% Função para cálculo da média % Sintaxe:% [m] = media(dados)% Entradas: Dados = vetor% Saídas: m = média% $Revision: 1.00 $ $Date: 01/07/2006
function m = media(dados)m = sum(dados)/size(dados,2)
Curso de MatlabEng. Márcio Ferreira 82
Aula 7 – Arquivos .m
• Criação de Funções
medesvmedesv.m.m
dados
Média e desvio
mdesvmdesv.m.m
% Função para cálculo da média % e desvio padrão% Sintaxe:% [m, s] = medesv(dados)% Entradas: Dados = vetor% Saídas: m = média; s = desvio padrão% $Revision: 1.00 $ $Date: 01/07/2006
function [m, s] = medesv(dados)m = sum(dados)/size(dados,2)s = std(dados)
% Função para cálculo da média % e desvio padrão% Sintaxe:% [m, s] = medesv(dados)% Entradas: Dados = vetor% Saídas: m = média; s = desvio padrão% $Revision: 1.00 $ $Date: 01/07/2006
function [m, s] = medesv(dados)m = sum(dados)/size(dados,2)s = std(dados)
Curso de MatlabEng. Márcio Ferreira 83
Aula 7 – Arquivos .m
• Criação de Funções escolha.mescolha.m
% Função sem argumentos para teste do comando menu
function escolhak = menu('Choose a
color','Vermelho','Verde','Azul')if k==1
disp('A cor é Vermelho')elseif k == 2
disp('A cor é Verde')elseif k == 2
disp('A cor é Azul')end
% Função sem argumentos para teste do comando menu
function escolhak = menu('Choose a
color','Vermelho','Verde','Azul')if k==1
disp('A cor é Vermelho')elseif k == 2
disp('A cor é Verde')elseif k == 2
disp('A cor é Azul')end
Curso de MatlabEng. Márcio Ferreira 84
Aula 7 – Arquivos .m
• Criação de Funções
• Escreva um arquivo ‘script’ M-File que:Converta temperatura em Fahrenheit para Celsius
T TC F= −59
32*( )
Curso de MatlabEng. Márcio Ferreira 85
Aula 7 – Arquivos .m
• Criação de Funções
function celsius = converte(faren)
celsius = (5/9)*(faren-32);
disp(['A temperatura em Celsius é: ' num2str(celsius)]);
functionfunction celsiuscelsius = converte(= converte(farenfaren))
celsiuscelsius = (5/9)*(= (5/9)*(farenfaren--32);32);
dispdisp(['A temperatura em Celsius (['A temperatura em Celsius éé: ' : ' num2str(num2str(celsiuscelsius)]);)]);
converte.mconverte.m
O argumento de entrada éutilizado no cálculo
O argumento de saída é o calculado
Curso de MatlabEng. Márcio Ferreira 86
Aula 7 – Arquivos .m
• Criação de Funções dica.mdica.m
x = rand(100,10);
for i = 1:size(x,2)figure(i)plot(x(:,i),'k:square','LineWidth',2);title ('Senos','FontSize',14,'FontWeight','bold');xlabel ('Tempo','FontSize',12,'FontWeight','bold');ylabel ('Senos','FontSize',12,'FontWeight','bold');set(gca,'FontSize',12,'FontWeight','bold')saveas(gcf, [num2str(i) '.bmp'])
end
x = rand(100,10);
for i = 1:size(x,2)figure(i)plot(x(:,i),'k:square','LineWidth',2);title ('Senos','FontSize',14,'FontWeight','bold');xlabel ('Tempo','FontSize',12,'FontWeight','bold');ylabel ('Senos','FontSize',12,'FontWeight','bold');set(gca,'FontSize',12,'FontWeight','bold')saveas(gcf, [num2str(i) '.bmp'])
end
Curso de MatlabEng. Márcio Ferreira 87
Aula 7 – Arquivos .m
• Funções, Toolboxes e Interfaces
Funções criadas pelo usuário
Meu_ToolboxMinha_Interface
f1.m f2.m f3.m f4.m
g1.m h2.m i3.m j4.m
h1.m m2.m n3.m u4.mA criação de Toolboxes e Interfaces, com as Funções definidas pelo usuário, permitem a documentação e transferência de conhecimento, de forma padronizada, para outros grupos ou pessoas.
Curso de MatlabEng. Márcio Ferreira 88
Aula 7 – Arquivos .m
• Exercícios
» type exercicios_07.txt»» typetype exercicios_07.txtexercicios_07.txt
Curso de MatlabEng. Márcio Ferreira 89
Aula 8 – Análise de Sinais
Curso de MatlabEng. Márcio Ferreira 90
Aula 8 – Análise de Sinais
Java 1.02 version
FIR digital filter demo (Java 1.02 version)
Filtragem de Sinais Fita Cassete Filtrar Ruído de Alta Freqüência (Filtro Dolby)
Filtro Passa Banda Ouvido Humano (20 – 20.000Hz)
Compressão de Dados Conversa Telefônica Diminuição da Amostragem
Curso de MatlabEng. Márcio Ferreira 91
Aula 8 – Análise de Sinais
• Funções de análise de sinais
• FFT – Transformada de Fourier
filtro1.mfiltro1.m
filtro2.mfiltro2.m
filtro_fftfiltro_fft.m.m
Curso de MatlabEng. Márcio Ferreira 92
Aula 8 – Análise de Sinais
• Ajuste de Curvas
polyfitpolyfit Ajusta um polinômio de ordem n a um conjunto de dados.
Usando um polinômio de 3° grau
aula08b.maula08b.m
» x = [1 2 3 4 5 6]» y = [2 1 5 3 9 5]» plot(x,y)» [p, s] = polyfit(x,y,1)» y2 = polyval(p, x)» plot(x,y,x,y2)
»» x = [1 2 3 4 5 6]x = [1 2 3 4 5 6]»» y = [2 1 5 3 9 5]y = [2 1 5 3 9 5]»» plot(x,yplot(x,y))»» [p, s] = [p, s] = polyfit(x,ypolyfit(x,y,1),1)»» y2 = y2 = polyval(ppolyval(p, x), x)»» plot(x,y,x,y2plot(x,y,x,y2))
» [p, s] = polyfit(x,y,3)» y2 = polyval(p, x)» plot(x,y,x,y2)
»» [p, s] = [p, s] = polyfit(x,ypolyfit(x,y,3),3)»» y2 = y2 = polyval(ppolyval(p, x), x)»» plot(x,y,x,y2plot(x,y,x,y2))Usem
o
Usem o help
help!!!!!!
Curso de MatlabEng. Márcio Ferreira 93
Aula 8 – Análise de Sinais
• Ajuste de Curvas
0 1 2 3 4 5 6 7 8 9 10-2
-1.5
-1
-0.5
0
0.5
1
1.5Curve Fitting
Original Curve5th order 11th order
» x = 0:.1:10;» y = sin(x)+cos(2*x);» coeff1 = polyfit(x,y,5);» y1 = polyval(coeff1, x);» coeff2 = polyfit(x,y,11);» y2 = polyval(coeff2, x);» plot(x,y,'g',x,y1,'r',x,y2,'b')
»» x = 0:.1:10;x = 0:.1:10;»» y = y = sinsin(x)+cos(2*x);(x)+cos(2*x);»» coeff1 = coeff1 = polyfitpolyfit(x,y,5);(x,y,5);»» y1 = y1 = polyvalpolyval(coeff1, x);(coeff1, x);»» coeff2 = coeff2 = polyfitpolyfit(x,y,11);(x,y,11);»» y2 = y2 = polyvalpolyval(coeff2, x);(coeff2, x);»» plotplot(x,y,'g',x,y1,'r',x,y2,'b')(x,y,'g',x,y1,'r',x,y2,'b')
aula08c.maula08c.m
Curso de MatlabEng. Márcio Ferreira 94
Aula 8 – Análise de Sinais
• Interpolação
» t = 1900:10:1990; » p = [75.995 91.972 105.711 123.203 131.669 150.697 179.323
203.212 226.505 249.633]; » interp1(t,p,1975, 'linear')
»» t = 1900:10:1990; t = 1900:10:1990; »» p = [75.995 91.972 105.711 123.203 131.669 150.697 179.323 p = [75.995 91.972 105.711 123.203 131.669 150.697 179.323
203.212 226.505 249.633]; 203.212 226.505 249.633]; »» interp1(t,p,1975, 'linear')interp1(t,p,1975, 'linear')
interp1interp1 Interpolação unidimensional
interp2interp2 Interpolação bidimensional
» [X,Y] = meshgrid(-3:.25:3);» Z = peaks(X,Y);» [XI,YI] = meshgrid(-3:.125:3);» ZI = interp2(X,Y,Z,XI,YI);» mesh(X,Y,Z), hold, mesh(XI,YI,ZI+15)» hold off» w = interp2(X,Y,Z,-2,-2)
»» [X,Y] = meshgrid([X,Y] = meshgrid(--3:.25:3);3:.25:3);»» Z = Z = peaks(X,Ypeaks(X,Y););»» [XI,YI] = meshgrid([XI,YI] = meshgrid(--3:.125:3);3:.125:3);»» ZI = interp2(X,Y,Z,XI,YI);ZI = interp2(X,Y,Z,XI,YI);»» mesh(X,Y,Zmesh(X,Y,Z), hold, mesh(XI,YI,ZI+15)), hold, mesh(XI,YI,ZI+15)»» hold offhold off»» w = interp2(X,Y,Z,w = interp2(X,Y,Z,--2,2,--2)2)
aula08d.maula08d.m
Curso de MatlabEng. Márcio Ferreira 95
Aula 8 – Análise de Sinais
• Interpolação
interp2interp2 Interpolação bidimensional
aula08e.maula08e.m
Curso de MatlabEng. Márcio Ferreira 96
Aula 8 – Análise de Sinais
• Exercícios
• Leitura ComplementarC:\MATLABR11\help\pdf_doc\signal\signal_tb.pdfC:\MATLABR11\help\pdf_doc\stats\stats_tb.pdfC:\MATLABR11\help\pdf_doc\wavelet\wavelet_ug.pdf
» type exercicios_08.txt»» typetype exercicios_08.txtexercicios_08.txt
Curso de MatlabEng. Márcio Ferreira 97
Aula 9 – Análise de Sinais
• Excel LinkQuando o Matlab é instalado, ele cria uma pasta de nome toolbox, dentro dessa pasta tem uma sub pasta de nome exlink.O Arquivo excllink.xla permite troca de dados interativos entre o Matlab e o Excel.
putmatrix: Copia a matriz selecionada para o Matlab
getmatrix: Copia a matriz do Matlab para o Excel
evalstring: Avalia uma função no Matlab dentro do Excel
aula09a.maula09a.m
Curso de MatlabEng. Márcio Ferreira 98
Aula 9 – Análise de Sinais
• Importação e Exportação de ASCII
• dlmread.mLê arquivos ASCII
M = dlmread(filename,delimiter)M = dlmread(filename,delimiter,r,c)
• dlmwrite.mEscreve valores para um arquivo ASCII
dlmwrite(filename,A,delimiter)dlmwrite(filename,A,delimiter,r,c)
aula09b.maula09b.m
aula09c.maula09c.m
Usem o
Usem o help
help!!!!!!
Curso de MatlabEng. Márcio Ferreira 99
Aula 9 – Análise de Sinais
• Função de Autocorrelaçãoautocorr
» t=linspace(0,2*pi,2^8);» % Função senos com ruído de 50Hz» y=sin(10*t)+2*cos(2*t)+2*sin(35*t)+sin(50*t);» % Plota o sinal original» subplot(2,1,1)» plot(t,y,'b') » [ACF, Lags, Bounds] = autocorr(y,size(y,2)-1)» subplot(2,1,2)» plot(Lags,ACF,'r')
»» t=linspace(0,2*pi,2^8);t=linspace(0,2*pi,2^8);»» % % FunFunççãoão senossenos com com ruruíídodo de 50Hzde 50Hz»» y=sin(10*t)+2*cos(2*t)+2*sin(35*t)+sin(50*t);y=sin(10*t)+2*cos(2*t)+2*sin(35*t)+sin(50*t);»» % % PlotaPlota o o sinalsinal originaloriginal»» subplot(2,1,1)subplot(2,1,1)»» plot(t,y,'bplot(t,y,'b') ') »» [ACF, Lags, Bounds] = autocorr(y,size(y,2)[ACF, Lags, Bounds] = autocorr(y,size(y,2)--1)1)»» subplot(2,1,2)subplot(2,1,2)»» plot(Lags,ACF,'rplot(Lags,ACF,'r') ')
aula09d.maula09d.m
Curso de MatlabEng. Márcio Ferreira 100
Aula 9 – Análise de Sinais
• Aquisição de Dados
» ai = analoginput('winsound')» addchannel(ai, 1)» set(ai, 'SampleRate', 11025);» set(ai, 'SamplesPerTrigger', 11025);» start(ai)» data = getdata(ai);» plot(data)» title('Gravação da placa de som do PC')
»» aiai = = analoginput('winsoundanaloginput('winsound')')»» addchannel(aiaddchannel(ai, 1), 1)»» set(aiset(ai, ', 'SampleRateSampleRate', 11025);', 11025);»» set(aiset(ai, ', 'SamplesPerTriggerSamplesPerTrigger', 11025);', 11025);»» start(aistart(ai))»» data = data = getdata(aigetdata(ai););»» plot(dataplot(data))»» title('Gravatitle('Gravaççãoão dada placaplaca de de somsom do PC')do PC')
Curso de MatlabEng. Márcio Ferreira 101
Aula 9 – Análise de Sinais
• Aquisição de Dados
» data, fs] = daqrecord(5, 8192, 1);» daqplay(data, fs)»» data, data, fsfs] = daqrecord(5, 8192, 1);] = daqrecord(5, 8192, 1);»» daqplay(datadaqplay(data, , fsfs))
daq_fftdaq_fft.m.m
Curso de MatlabEng. Márcio Ferreira 102
Aula 9 – Análise de Sinais
• Aquisição de Dados
» daqscope»» daqscopedaqscope
» daqfcngen»» daqfcngendaqfcngen
Curso de MatlabEng. Márcio Ferreira 103
Aula 9 – Análise de Sinais
• Exercícios
• Leitura ComplementarC:\MATLABR11\help\pdf_doc\excel\excelus5.pdfC:\MATLABR11\help\pdf_doc\hosa\hosa.pdf
» type exercicios_09.txt»» typetype exercicios_09.txtexercicios_09.txt
Curso de MatlabEng. Márcio Ferreira 104
Aula 10 – Interfaces
• Apresentação GUIDE
» guide»» guideguide
Curso de MatlabEng. Márcio Ferreira 105
Aula 10 – Interfaces
• Calculadora gerada pelo guide
» funtool»» funtoolfuntool
Curso de MatlabEng. Márcio Ferreira 106
Aula 10 – Interfaces
• Apresentação GUIDEProperty Editor
Callback: Arquivo .m a ser executada ao clicar no botão
String: Texto do botão
Tag: Nome identificador do botão
Value: Valor padrão do botão
Curso de MatlabEng. Márcio Ferreira 107
Aula 10 – Interfaces
• Apresentação GUIDECallback Editor
Callback: Função a ser executada ao clicar no botão. A função pode ser um m-file ou ser escrita no quadro.
Curso de MatlabEng. Márcio Ferreira 108
Aula 10 – Interfaces
• Elaboração de Interfaces
Curso de MatlabEng. Márcio Ferreira 109
Aula 10 – Interfaces
• Elaboração de InterfacesGET(object_handle, ‘<Property_Name>’):
retorna o valor de uma propriedade específica do para o objeto indicado por ‘object_handle’.
Exemplo:
– Ler o valor da caixa de texto com tag=caixa1
– Ler o texto da caixa de texto com tag=caixa2
valor = str2num(get(findobj('Tag', 'caixa1'), 'String'));valor = str2num(valor = str2num(getget((findobjfindobj('('TagTag', 'caixa1'), 'String'));', 'caixa1'), 'String'));
texto = get(findobj('Tag', 'caixa1'), 'String');texto = texto = getget((findobjfindobj('('TagTag', 'caixa1'), 'String');', 'caixa1'), 'String');
» texto = TEXTO»» texto = TEXTOtexto = TEXTO
» valor = 33.56»» valor = 33.56valor = 33.56
Curso de MatlabEng. Márcio Ferreira 110
Aula 10 – Interfaces
• Elaboração de InterfacesSET(object_handle, ‘<Property_Name>’, ‘< PropertyValue>’):
retorna os possíveis valores para uma propriedade específica do para o objeto indicado por ‘object_handle’.
Exemplo:
– Escrever valor1 na caixa de texto com tag=caixa2
set(findobj('Tag', 'caixa2'), 'String', 'valor1'); set(set(findobjfindobj('('TagTag', 'caixa2'), 'String', 'valor1'); ', 'caixa2'), 'String', 'valor1');
Curso de MatlabEng. Márcio Ferreira 111
Aula 10 – Interfaces
• Elaboração de Interfaces
Curso de MatlabEng. Márcio Ferreira 112
Aula 10 – Interfaces
• Elaboração de Interfaces
Curso de MatlabEng. Márcio Ferreira 113
Aula 10 – Interfaces
• Elaboração de Interfaces
Aqui vai o cálculo ou uma função
Curso de MatlabEng. Márcio Ferreira 114
Aula 10 – Interfaces
• Elaboração de Interfaces
Curso de MatlabEng. Márcio Ferreira 115
Aula 10 – Interfaces
• Elaboração de InterfacesModo de ediModo de ediççãoão Modo de testeModo de teste
Curso de MatlabEng. Márcio Ferreira 116
Aula 10 – Interfaces
• Elaboração de Interfaces
O comando calculacalcula no workspace abre a interface criada
Curso de MatlabEng. Márcio Ferreira 117
Aula 10 – Interfaces
• Elaboração de Interfaces
Curso de MatlabEng. Márcio Ferreira 118
Aula 10 – Interfaces
• Elaboração de Interfaces» variaveis={'Sin'; 'Cos'};»» variaveisvariaveis={'={'SinSin'; ''; 'CosCos'};'};
Curso de MatlabEng. Márcio Ferreira 119
Aula 10 – Interfaces• Elaboração de Interfaces
valor_pop = get(findobj('Tag', 'PopupMenu1'), 'Value');valor_check1 = get(findobj('Tag', 'Checkbox1'), 'Value');valor_check2 = get(findobj('Tag', 'Checkbox2'), 'Value');
x=0:.1:2*pi;
if valor_pop == 1h1 = plot(x,sin(x));
elseif valor_pop == 2h1 = plot(x,cos(x));
end
if valor_check1 == 1set(h1,'Color','y');
elseif valor_check1 == 0set(h1,'Color','b');
end
if valor_check2 == 0set(h1,'LineStyle','-');
elseif valor_check2 == 1set(h1,'LineStyle','--');
end
valor_popvalor_pop = = getget((findobjfindobj('('TagTag', 'PopupMenu1'), '', 'PopupMenu1'), 'ValueValue');');valor_check1 = valor_check1 = getget((findobjfindobj('('TagTag', 'Checkbox1'), '', 'Checkbox1'), 'ValueValue');');valor_check2 = valor_check2 = getget((findobjfindobj('('TagTag', 'Checkbox2'), '', 'Checkbox2'), 'ValueValue');');
x=0:.1:2*x=0:.1:2*pipi;;
ifif valor_popvalor_pop == 1== 1h1 = h1 = plotplot(x,(x,sinsin(x));(x));
elseifelseif valor_popvalor_pop == 2== 2h1 = h1 = plotplot(x,(x,coscos(x));(x));
endend
ifif valor_check1 == 1valor_check1 == 1set(h1,'set(h1,'ColorColor','y');','y');
elseifelseif valor_check1 == 0valor_check1 == 0set(h1,'set(h1,'ColorColor','b');','b');
endend
ifif valor_check2 == 0valor_check2 == 0set(h1,'set(h1,'LineStyleLineStyle','','--');');
elseifelseif valor_check2 == 1valor_check2 == 1set(h1,'set(h1,'LineStyleLineStyle','','----');');
endend
Curso de MatlabEng. Márcio Ferreira 120
Tópicos Especiais
min f (x) = ex1 (4x1
2 + 2x22 + 4x1x2 + 2x2 +1)
x function f = objfun (x)f = 3*(1-x(1)).^2.*exp(-(x(1).^2) -
(x(2)+1).^2) ...- 10*(x(1)/5 - x(1).^3 -x(2).^5).*exp(-x(1).^2-x(2).^2) ...- 1/3*exp(-(x(1)+1).^2 - x(2).^2);
function f = function f = objfunobjfun (x)(x)f = 3*(1f = 3*(1--x(1)).^2.*exp(x(1)).^2.*exp(--(x(1).^2) (x(1).^2) --
(x(2)+1).^2) ...(x(2)+1).^2) ...-- 10*(x(1)/5 10*(x(1)/5 -- x(1).^3 x(1).^3 --x(2).^5).*exp(x(2).^5).*exp(--x(1).^2x(1).^2--x(2).^2) ...x(2).^2) ...-- 1/3*exp(1/3*exp(--(x(1)+1).^2 (x(1)+1).^2 -- x(2).^2);x(2).^2);
• Unconstrained optimization
» x=[0 -2]; » op=optimset('LargeScale','off');» [x,fval,exitflag,output]=fminunc('objfun',x0,op);
»» x=[0 x=[0 --2]; 2]; »» opop==optimsetoptimset('('LargeScaleLargeScale','','offoff');');»» [x,[x,fvalfval,,exitflagexitflag,output]=,output]=fminuncfminunc('('objfunobjfun',x0,',x0,opop););
objfunobjfun.m.m
topicos1.mtopicos1.m
Curso de MatlabEng. Márcio Ferreira 121
Tópicos Especiais
• Constrained optimization
Sujeito a: x1>= 0
function [c, ceq] = confun (x)c=[x(1)];ceq=[];
functionfunction [c, [c, ceqceq] = ] = confunconfun (x)(x)c=[x(1)];c=[x(1)];ceqceq=[];=[];
x0=[0 0];op=optimset('LargeScale','off');[x,fval]=fmincon('objfun',x0,[],[],[],[],[],[],'confun',op)
x0=[0 0];x0=[0 0];opop==optimsetoptimset('('LargeScaleLargeScale','','offoff');');[x,[x,fvalfval]=]=fminconfmincon('('objfunobjfun',x0,[],[],[],[],[],[],'',x0,[],[],[],[],[],[],'confunconfun',',opop))
min f (x) = ex1 (4x1
2 + 2x22 + 4x1x2 + 2x2 +1)
x
objfunobjfun.m.m
topicos2.mtopicos2.m
Curso de MatlabEng. Márcio Ferreira 122
Tópicos Especiais
• Programação Linearmin f T x x
Sujeito a: A . x <= bAeq . x = beqlb <= x <= ub
Exemplo:
min f(x) = -5x1 - 4x2 - 6x3
Sujeito a:x1 - x2 + x3 <= 203x1 + 2x2 + 4x3 <= 423 x1 + 2x2 <= 300 <= x1; 0 <= x2 ; 0 <= x3
» [x,fval,flag]=linprog(f,A,b,Aeq,bea,lb,ub,x0,op)»» [x,[x,fvalfval,,flagflag]=]=linproglinprog(f,A,b,(f,A,b,AeqAeq,,beabea,,lblb,,ubub,x0,,x0,opop))
»f=[-5;-4;-6];»A=[1 -1 1;3 2 4;3 2 0];»b=[20;42;30];»lb=zeros(3,1);»[x,fval]=linprog(f,A,b,[],[],lb)Optimization terminated
successfully.x =
0.000015.00003.0000
fval =-78.0000
»»f=[f=[--5;5;--4;4;--6];6];»»A=[1 A=[1 --1 1;3 2 4;3 2 0];1 1;3 2 4;3 2 0];»»b=[20;42;30];b=[20;42;30];»»lb=zeros(3,1);lb=zeros(3,1);»»[[x,fvalx,fval]=]=linprog(f,A,b,[],[],lblinprog(f,A,b,[],[],lb))Optimization terminated Optimization terminated
successfully.successfully.x =x =
0.00000.000015.000015.00003.00003.0000
fvalfval ==--78.000078.0000
topicos3.mtopicos3.m
Curso de MatlabEng. Márcio Ferreira 123
Tópicos Especiais
• Programação QuadráticaSe função objetivo é quadrática e as restrições são lineares, podemos utilizar quadprog do Matlab.Exemplo: min
s.a.
A função objetivo deve ser escrita na forma: S=0.5*x'*H*x + f'*x
[x,S]=quadprog(H,f,A,b,Aeq,beq) x=[0.4812 2.4962 0.5263 -0.6023 0.7514] S=17.7989
25
24
23
22
21 5432 xxxxxS ++++=
042 54321 =−+−+ xxxxx
025 5431 =−+− xxxx
62 321 ≥++ xxx
024 543 ≤−+ xxx
[ ]00000' =f
⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢
⎣
⎡
=
100
08
00
00
00
006000004000002
H
⎥⎦
⎤⎢⎣
⎡−−
−−
=11
11
24
01
52
Aeq
⎥⎦
⎤⎢⎣
⎡−
−−−=
20
10
41
02
01
A
⎥⎦
⎤⎢⎣
⎡=
00
beq
⎥⎦
⎤⎢⎣
⎡−=
06
b
topicos4.mtopicos4.m
Curso de MatlabEng. Márcio Ferreira 124
Tópicos Especiais
• Integração Numérica topicos5.mtopicos5.m
» % Aproximação or trapézios (grosseira)» x = 0:.2:pi;» y = minhafun(x);» plot(x,y,'-r')» hold on» area = trapz(x,y)
»» % % AproximaAproximaççãoão or or traptrapéézioszios ((grosseiragrosseira))»» x = 0:.2:pi;x = 0:.2:pi;»» y = y = minhafun(xminhafun(x););»» plot(x,y,'plot(x,y,'--rr')')»» hold onhold on»» area = area = trapz(x,ytrapz(x,y))
minhafunminhafun.m.m
» % Aproximação or quadratura(preciso)» area2 = quad('minhafun',0,pi)» ezplot('minhafun',0,pi)
»» % Aproxima% Aproximaçção ão oror quadratura(preciso)quadratura(preciso)»» area2 = area2 = quadquad('('minhafunminhafun',0,',0,pipi))»» ezplotezplot('('minhafunminhafun',0,',0,pipi))
» % Aproximação or quadratura(mais preciso)» area3 = quad8('minhafun',0,pi)»» % Aproxima% Aproximaçção ão oror quadratura(mais preciso)quadratura(mais preciso)»» area3 = quad8('area3 = quad8('minhafunminhafun',0,',0,pipi))
Curso de MatlabEng. Márcio Ferreira 125
Tópicos Especiais
• Manipulação Simbólica
» help symbolic» help sym» help syms» syms x y %cria x e y como var. simbólicas» f=x+2*y » g=x*y » f+g; » f*g; » f/g;
»» helphelp symbolicsymbolic»» helphelp symsym»» helphelp symssyms»» symssyms x y %cria x e y como var. simbx y %cria x e y como var. simbóólicaslicas
»» f=x+2*y f=x+2*y »» g=x*y g=x*y »» f+g; f+g; »» f*g; f*g; »» f/g; f/g;
Curso de MatlabEng. Márcio Ferreira 126
Tópicos Especiais
• Manipulação Simbólica - Simplificação
O produto das operações pode resultar em expressões matemáticas complicadas:
simplesimple; coloca a expressão na forma mais simplessimplifysimplify; simplifica a expressãoprettypretty; exibe a expressão de uma forma mais visual
» eq = x-cos(x/2)^(log(45*x/2))/45^x*9.45» pretty(eq)»» eqeq = = xx--coscos(x/2)^((x/2)^(loglog(45*x/2))/45^x*9.45(45*x/2))/45^x*9.45»» prettypretty((eqeq))
Curso de MatlabEng. Márcio Ferreira 127
Tópicos Especiais
• Manipulação Simbólica - Simplificação
Após a manipulação e simplificação pode-se desejar substituir valores para as variáveis simbólicas:
» subs(f,2); %substitui em f x=2» subs(f,x,2); %substitui em f x=2 se f é função multivariável» subs(f,x,y); %substitui em f x=y
»» subssubs(f,2); %substitui em f x=2(f,2); %substitui em f x=2»» subssubs(f,x,2); %substitui em f x=2 se f (f,x,2); %substitui em f x=2 se f éé funfunçção multivarião multivariáávelvel»» subssubs(f,x,y); %substitui em f x=y(f,x,y); %substitui em f x=y
Curso de MatlabEng. Márcio Ferreira 128
Tópicos Especiais
• Manipulação Simbólica – Diferenciação e Integração
Se a constante de integração é diferente de zero, devemos somar essa constante à solução obtida
» help diff» syms x y» f= 2*x + x*y + 2*y;» diff(f, x); derivada parcial em relação a x
»» helphelp diffdiff»» symssyms x yx y»» f= 2*x + x*y + 2*y;f= 2*x + x*y + 2*y;»» diffdiff(f, x); derivada parcial em rela(f, x); derivada parcial em relaçção a xão a x
» help int» int(f,x); %integra g em relação a x com constante de int=0» int(f,x,a,b); %integral definida entre a e b
»» helphelp intint»» int(f,x); %integra g em relaint(f,x); %integra g em relaçção a x com constante de int=0ão a x com constante de int=0»» int(f,x,a,b); %integral definida entre a e bint(f,x,a,b); %integral definida entre a e b
Curso de MatlabEng. Márcio Ferreira 129
Links
• http://www.mathworks.com/products/matlab/
• http://www.mathworks.co.uk/matlabcentral/link_exchange/index.html
• C:\MATLABR11\help\pdf_doc\matlab\quickref.pdf
• C:\MATLABR11\help\pdf_doc\matlab\using_ml.pdf
• C:\MATLABR11\help\pdf_doc\matlab\gui\buildgui.pdf