33
Curso de Matlab Eng. Me. Márcio Ferreira UFRGS - Departamento de Eng. Química Julho de 2006

Curso Matlab

Embed Size (px)

DESCRIPTION

This is a tutorial of Matlab

Citation preview

Page 1: Curso Matlab

Curso de Matlab

Eng. Me. Márcio FerreiraUFRGS - Departamento de Eng. Química

Julho de 2006

Page 2: Curso Matlab

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

Page 3: Curso Matlab

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

Page 4: Curso Matlab

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

Page 5: Curso Matlab

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!!!!!!

Page 6: Curso Matlab

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

Page 7: Curso Matlab

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

Page 8: Curso Matlab

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!!!!!!

Page 9: Curso Matlab

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

Page 10: Curso Matlab

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

Page 11: Curso Matlab

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

Page 12: Curso Matlab

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)

Page 13: Curso Matlab

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

Page 14: Curso Matlab

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')')

Page 15: Curso Matlab

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

Page 16: Curso Matlab

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

Page 17: Curso Matlab

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);

Page 18: Curso Matlab

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

Page 19: Curso Matlab

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

Page 20: Curso Matlab

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.

Page 21: Curso Matlab

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)

Page 22: Curso Matlab

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

Page 23: Curso Matlab

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

Page 24: Curso Matlab

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

Page 25: Curso Matlab

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

Page 26: Curso Matlab

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

Page 27: Curso Matlab

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

Page 28: Curso Matlab

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

Page 29: Curso Matlab

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

Page 30: Curso Matlab

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

Page 31: Curso Matlab

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

Page 32: Curso Matlab

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;

Page 33: Curso Matlab

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