matlab introd

38
Curso Básico de MATLAB 1 CURSO BÁSICO DE MATLAB CONTEÚDO CURSO BÁSICO DE MATLAB .................................................................................... 1 INTRODUÇÃO ............................................................................................................. 2 TUTORIAL BÁSICO ..................................................................................................... 5 AMBIENTE MATLAB (WORKSPACE)................................................................................. 5 ATRIBUIÇÃO DE UM VALOR NUMÉRICO A UMA VARIÁVEL .................................................... 5 OPERAÇÕES ARITMÉTICAS .............................................................................................. 6 LIMPAR O WORKSPACE DO MATLAB ............................................................................... 6 NÚMEROS COMPLEXOS................................................................................................... 7 SALVANDO DADOS.......................................................................................................... 7 CARREGANDO DADOS..................................................................................................... 8 ATRIBUIR UM VETOR DE VALORES NUMÉRICOS A UMA VARIÁVEL ........................................ 8 OPERAÇÕES ELEMENTARES COM OS ELEMENTOS DE VETORES ......................................... 8 OPERAÇÕES COM VETORES ............................................................................................ 8 TAMANHO OU COMPRIMENTO DE VETORES....................................................................... 9 GERAÇÃO DE VETORES................................................................................................... 9 GERAÇÃO DE GRÁFICOS COM OS VETORES .................................................................... 10 LOOPS DO TIPO FOR - END............................................................................................ 12 LOOPS DO TIPO WHILE - END ........................................................................................ 12 CONDICIONAIS: ESTRUTURAS DO TIPO IF-ELSE-END........................................................ 12 CHAVEAMENTO: ESTRUTURAS DO TIPO SWITCH-CASE..................................................... 13 OPERAÇÕES COM VETORES (ARRAYS) ........................................................................... 14 COMANDO FIND(X)........................................................................................................ 15 COMANDOS MAX(X), MIN(X) ........................................................................................... 15 CRIAR ARQUIVOS DE EXTENSÃO M................................................................................. 16 CRIANDO FUNÇÕES M ................................................................................................... 17 EXECUTANDO UMA FUNÇÃO A PARTIR DO WORKSPACE ................................................... 19 EXECUTANDO UMA FUNÇÃO A PARTIR DE UM PROGRAMA .M............................................ 20 GRAVANDO E CARREGANDO DADOS .............................................................................. 21 PERSONALIZAÇÃO DE EIXOS ......................................................................................... 22 EXEMPLO..................................................................................................................... 23 MANIPULAÇÃO DE MATRIZES ......................................................................................... 24 MATRIZES ESPECIAIS ................................................................................................... 25 GRÁFICOS UTILIZANDO: BAR, STAIRS,STEM .................................................................... 26 VARIÁVEIS ALEATÓRIAS ................................................................................................ 27 AJUSTE DE CURVAS ...................................................................................................... 28 GERAÇÃO DE SINAIS .................................................................................................... 30 IMPULSO ...................................................................................................................... 30 DEGRAU ...................................................................................................................... 30 PERIÓDICO .................................................................................................................. 31 ANÁLISE ESPECTRAL .................................................................................................... 32 ANÁLISE ESPECTRAL DE SINAIS TRANSITÓRIOS .............................................................. 33 ANÁLISE ESPECTRAL DE SINAIS ALEATÓRIOS.................................................................. 33 GRÁFICOS DE LINHA ..................................................................................................... 34 SUPERFÍCIES ............................................................................................................... 34

Upload: lucas-mascagni

Post on 13-Dec-2015

271 views

Category:

Documents


1 download

TRANSCRIPT

Curso Básico de MATLAB 1

CURSO BÁSICO DE MATLAB

CONTEÚDO

CURSO BÁSICO DE MATLAB .................................................................................... 1

INTRODUÇÃO ............................................................................................................. 2

TUTORIAL BÁSICO..................................................................................................... 5

AMBIENTE MATLAB (WORKSPACE)................................................................................. 5ATRIBUIÇÃO DE UM VALOR NUMÉRICO A UMA VARIÁVEL .................................................... 5OPERAÇÕES ARITMÉTICAS .............................................................................................. 6LIMPAR O WORKSPACE DO MATLAB............................................................................... 6NÚMEROS COMPLEXOS................................................................................................... 7SALVANDO DADOS.......................................................................................................... 7CARREGANDO DADOS..................................................................................................... 8ATRIBUIR UM VETOR DE VALORES NUMÉRICOS A UMA VARIÁVEL ........................................ 8OPERAÇÕES ELEMENTARES COM OS ELEMENTOS DE VETORES ......................................... 8OPERAÇÕES COM VETORES ............................................................................................ 8TAMANHO OU COMPRIMENTO DE VETORES....................................................................... 9GERAÇÃO DE VETORES................................................................................................... 9GERAÇÃO DE GRÁFICOS COM OS VETORES.................................................................... 10LOOPS DO TIPO FOR - END............................................................................................ 12LOOPS DO TIPO WHILE - END ........................................................................................ 12CONDICIONAIS: ESTRUTURAS DO TIPO IF-ELSE-END........................................................ 12CHAVEAMENTO: ESTRUTURAS DO TIPO SWITCH-CASE..................................................... 13OPERAÇÕES COM VETORES (ARRAYS) ........................................................................... 14COMANDO FIND(X)........................................................................................................ 15COMANDOS MAX(X), MIN(X)........................................................................................... 15CRIAR ARQUIVOS DE EXTENSÃO M................................................................................. 16CRIANDO FUNÇÕES M ................................................................................................... 17EXECUTANDO UMA FUNÇÃO A PARTIR DO WORKSPACE ................................................... 19EXECUTANDO UMA FUNÇÃO A PARTIR DE UM PROGRAMA .M............................................ 20GRAVANDO E CARREGANDO DADOS .............................................................................. 21PERSONALIZAÇÃO DE EIXOS ......................................................................................... 22EXEMPLO..................................................................................................................... 23MANIPULAÇÃO DE MATRIZES ......................................................................................... 24MATRIZES ESPECIAIS ................................................................................................... 25GRÁFICOS UTILIZANDO: BAR, STAIRS,STEM.................................................................... 26VARIÁVEIS ALEATÓRIAS ................................................................................................ 27AJUSTE DE CURVAS...................................................................................................... 28GERAÇÃO DE SINAIS .................................................................................................... 30IMPULSO ...................................................................................................................... 30DEGRAU ...................................................................................................................... 30PERIÓDICO .................................................................................................................. 31ANÁLISE ESPECTRAL .................................................................................................... 32ANÁLISE ESPECTRAL DE SINAIS TRANSITÓRIOS .............................................................. 33ANÁLISE ESPECTRAL DE SINAIS ALEATÓRIOS.................................................................. 33GRÁFICOS DE LINHA ..................................................................................................... 34SUPERFÍCIES ............................................................................................................... 34

Curso Básico de MATLAB 2

INTRODUÇÃO

MATLAB é um software para análise matemática voltado para processamentonumérico (apesar de ter um módulo de processamento simbólico baseado no programaMAPLE). O ponto forte do MATLAB são as bibliotecas matemáticas de álgebramatricial, os recursos gráficos e a abertura para desenvolvimento de módulos(toolboxes) por terceiros. A comunidade acadêmica de controle elegeu o MATLAB suaplataforma principal e, por isso, a gama de módulos nesta área é muito grande. OMATLAB tem um programa “companheiro” que tem uma interface gráfica ondecircuitos de simulação e controle podem ser implementados de maneira extremamenteamigável, o SIMULINK.

Os módulos do MATLAB comercializados pela MATHWORKS (muitos outros podemser obtidos gratuitamente na web ou ainda adquiridos diretamente de seus produtoressão atualmente:

• Chemometrics

• Communications

• Control System

• Financial Toolbox

• Frequency Domain System Identification

• Fuzzy Logic

• Higher-Order Spectral Analysis

• Image Processing

• LMI Control

• Mapping

• Model Predictive Control

• µ-Analysis and Synthesis

Curso Básico de MATLAB 3

• NAG

• Neural Network

• Optimization

• Partial Differential Equation

• QFT Control Design

• Robust Control

• Signal Processing

• Spline

• Statistics

• Symbolic/Extended Symbolic Math

• System Identification

• Wavelet

Além dos toolboxes do MATLAB, existem blocksets (conjuntos de blocos) doSIMULINK:

• DSP

• Fixed Point

• Nonlinear Control Design

• Power System Blockset

Com o ambiente SIMULINK é possível, utilizando algumas placas de hardwareeletrônico e o software Real Time Workshop, realizar simulações envolvendo sinaiselétricos externos, de sistemas físicos reais. Com isso é possível fazer o que sedenomina simulações com hardware in the loop. Por exemplo, pode-se simular umveículo onde a suspensão é ativa usando um veículo real e implementando ocontrolador em SIMULINK ou vice-versa.

Curso Básico de MATLAB 4

A estrutura do MATLAB é mostrada na figura abaixo. É recomendável visitar a páginada MATHWORKS na web: http://www.mathworks.com para maiores informações.

TUTORIAL BÁSICO

MATLAB trabalha básicamente com matrizes retangulares cujos elementos podemeventualmente ser complexos. Um escalar é interpretado como uma matriz de dimensão1x1, um vetor linha de N elementos como uma matriz de dimensão Nx1 e um vetorcoluna como uma matriz de dimensão 1xN.

Ambiente MATLAB (workspace)

Ao abrir o MATLAB, você estará no ambiente de trabalho também chamado deworkspace do MATLAB como mostra na seguinte figura:

Ambiente de trabalho do MATLAB ( workspace)

Curso Básico de MATLAB 5

Atribuição de um valor numérico a uma variável

Queremos atribuir o valor 3 à varíavel “a”» a=3 e presione a tecla ENTER, então aparecerá ...a = 3» Para observar as variáveis e dados existentes no workspace, utilizamos o comandoWho. Assim por exemplo:» whoYour variables are:a meupath»

Se queremos saber o conteúdo das variáveis listadas:» a=3a = 3

»

Operações aritméticas

Queremos somar 10 ao dobro de “a”, instanciado anteriormente, logo dividir por 10.» (10+2*a)/10ans = 1.6000

»

Para representar com 16 dígitos, utilizamos o comando format long» format long

» ans

ans = 1.60000000000000

Para maiores informações utilize help format» help format

Limpar o workspace do MATLAB

Limpar a variável “a” do workspace» clear a

Para confirmar a eliminação da variável» whoYour variables are:»

Se queremos limpar o workspace» clear

Curso Básico de MATLAB 6

Funções matemáticas elementares

abs(x) Valor absoluto ou módulo de um número complexoacos(x) Arco cosenoacosh(x) Arco coseno hiperbólicoasin(x) Arco senoasinh(x) Arco seno hiperbólicoatan(x) Arco tangenteatanh(x) Arco tangente hiperbólicoceil(x) Arredonda ao inteiro mais infinitoconj(x) Conjugado complexocos(x) Cosenocosh(x) Coseno hiperbólicoexp(x) Exponencialfix(x) Arredonda ao inteiro mais próximo do zerofloor(x) Arredonda ao inteiro menos infinitoimag(x) Parte imaginária de um número complexolog(x) Logaritmo naturallog10(x) Logaritmo na base 10real(x) Parte real de um número complexorem(x,y) Resto da divisão de x por yround(x) Arredonda ao inteiro mais próximosign(x) Função sinal (-1,0,1)sin(x) senosinh(x) Seno hiperbólicosqrt(x) Raiz quadradatan(x) Tangentetanh(x) Tangente hiperbólico

Números complexos

Sejam os números complexos: a = 1 + i*2 e b = 1 - i*2» a=1+i*2a = 1.0000 + 2.0000i» b=1-i*2b = 1.0000 - 2.0000i» real(a)ans = 1» imag(a)ans = 2»

Salvando dados

Queremos salvar as variáveia “a e b” com o nome de “complexo” no disco A» save a:complexo a b»

Para verificar utilize os comandos do DOS antecedidos por !

Curso Básico de MATLAB 7

» !dir a:»

Carregando dados

Queremos carregar o arquivo “complexo” do disco A» load a:complexo»

Verificamos o conteúdo» WhoYour variables are:a b»

Atribuir um vetor de valores numéricos a uma variável» x=[6 2 5 7]x = 6 2 5 7» y=[-1 0 1 2]y = -1 0 1 2»

Operações elementares com os elementos de vetores

Soma e subtração:» x(1)+x(3)-x(2)ans = 9»

Produto e divisão:» x(1)*x(3)/x(2)ans = 15»

Operações com vetores

Soma e subtração:» x-yans = 7 2 4 5»

Produto e divisão:» x.*yans = -6 0 5 14

» y./xans = -0.1667 0 0.2000 0.2857

Curso Básico de MATLAB 8

»

Operações mistas:» y-2ans = -3 -2 -1 0»» x+y-2ans = 3 0 4 7»» 3*xans = 18 6 15 21»» 3*x.*yans = -18 0 15 42»» (3*x.*y)./x+(y-2)ans = -6 -2 2 6»

Geração de novas variáveis» z=[x 2*y]z = 6 2 5 7 -2 0 2 4»» v=(3*x.*y)./x+(y-2)v = -6 -2 2 6»

Tamanho ou comprimento de vetores» size(x)ans = 1 4» size(z)ans = 1 8» length(z)ans = 8» length(y)ans = 4

Geração de vetores

Gerar o vetor t de 0 a 10 a intervalos de 2 unidades» t=0:2:10t = 0 2 4 6 8 10»

uma outra maneira:» t=(0:5)*2

Curso Básico de MATLAB 9

t = 0 2 4 6 8 10»

Gerar o vetor x de 0 a 5 a intervalos de 1 unidade» x=0:1:5x = 0 1 2 3 4 5»

ou» x=0:5x = 0 1 2 3 4 5»

Geração de gráficos com os vetores

Mostrar graficamente o vetor t» plot(t)»

1 2 3 4 5 60

2

4

6

8

10

Para tornar o fundo da figura branco:» whitebg»

Mostrar gráficamente o vetor x» plot(x)»

Curso Básico de MATLAB 10

1 2 3 4 5 60

1

2

3

4

5

Mostrar graficamente o vetor x em função do vetor t» plot(t,x)» xlabel('t')» ylabel('x')» title('FIGURA 1')»grid»

0 2 4 6 8 100

0.5

1

1.5

2

2.5

3

3.5

4

4.5

5

t

x

FIGURA 1

Curso Básico de MATLAB 11

Loops do tipo for - end

Os comandos instanciados entre for e end são executados enquanto a condição forverdadeira. Isto é:

for expressãocomandos

end

» for n=1:10x(n)=n.^2;

end»

Loops do tipo while - end

Os comandos instanciados entre while-end são executados enquanto a expressão forverdadeira. Isto é:

while expressãocomandos

end» n=1» while n <= 10

x(n)=n.^2;n=n+1;

end»

Condicionais: estruturas do tipo if-else-end

Os comandos associados a uma expressão são executados desde que ela sejaverdadeira. A estrutura condicional if-then tem o seguinte formato:

if expressão

Curso Básico de MATLAB 12

comandoselseif expressão

comandoselseif expressão

comandos..else

comandosend

Curso Básico de MATLAB 13

exemplo:» n=1;» if n < 1

x=-1;elseif n == 1

x=0;else

x=1;end»

Chaveamento: estruturas do tipo switch-case

Os comandos associados a uma expressão são executados desde que ela sejaverdadeira. A estrutura condicional if-then tem o seguinte formato:

switch expressãocase {expressão1}

comandoscase {expressão2}

comandos..otherwise

comandosend

exemplo:» n=1;» switch ncase {1}, x=2;case {-1},x=-2;otherwise, x=0;end»

Exemplo:%exemploIF.m%******************************************************************% Neste exemplo e pretende-se encontrar os instantes% o vetor y muda de sinal.% O vetor y e dado por:% y = sin(x).*exp(-x)% onde x esta no intervalo:% 0 < x <= 8 cujo passo e de 0.1%******************************************************************x=.1:.1:8;y=sin(x).*exp(-x);ind=1:length(x);plot(ind,y)

n=length(y);i=2;%indice para o controle do vetor y

Curso Básico de MATLAB 14

j=1;% indice para os momentos de mudanca de sinalwhile i < n if sign(y(i-1)) ~= sign(y(i)) if abs(y(i-1)) < abs(y(i)) z(i-1)=0; w(j)=i-1; else z(i)=0; w(j)=i; end j=j+1; else z(i)=y(i); end i=i+1;endw[w' x(w)' y(w)' z(w)']

Operações com vetores (arrays)x=[ 1 2 3];y=[ 4 5 6];x’ = 1 2 3

x’ = 4 5 6

(x+y)’ = 5 7 9

x’ + y’ = 5 7 9

x – y = -3 –3 -3 x + 2 = 3 4 5

x.*y = 4 10 18 x’.*y = Error

x*2 = 2 4 6 x.*2 = 2 4 6

x.\y = 4 2.5 2 y./x = 4 2.5 2

2\x =.5 1 1.5 2./x = 2 2 2/3

x^2 = Error x.^2 = 1 4 9

2^x = Error 2.^x = 2 4 8

x^y = Error x.^y = 1 32 729

(x+i*y)’ = 1-4i 2-5i 3-6i

(x+i*y).’= 1+4i 2+5i 3+6i

Curso Básico de MATLAB 15

Comando find(x)

find(x) retorna os índices cujos valores do vetor x são não nulos.

Se x = [10 2 3 0 7 9 0]

find(x) retornará: 1 2 3 5 6

Se houver alguma alguma condição com relação aos valores do vetor x, então estecomando retornará índices para os quais a condição é verdadeira. Assim por exemplo sequer obter os indices para os quais os valores do vetor x são nulos. De maneira que, ocomando adequado seria:

find(x == 0), o qual retornará 4 7

Ainda, podemos situar a condição mais elaborado. Assim, por exemplo se quer obter osindices correspondentes a valores do vetor x entre –3 e 3.

find(-3<=x & x<=3) o qual retornará 3 4 7.

Comandos max(x), min(x)

...

Gerar uma senoide de 0 a 1 seg., de frequência 5 Hz e amplitue pico-pico de 4unidades. A senoide será digitalizada a uma frequencia de amostragem de 100 Hz.»f0=5;»fs=100;»t=0:1/fs:1;»x=2*sin(2*pi*f0*t);»plot(t,x)»xlabel('tempo')»ylabel('x')»grid»

Curso Básico de MATLAB 16

0 0.2 0.4 0.6 0.8 1-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

tempo

x

Criar arquivos de extensão m

O conjunto de comandos utilizados para gerar a figura anterior podem serarmazenadas num arquivo.m utilizando qualquer editor. É muito comum utilizar oeditor Pfe32 ou o editor WordPad.

Como exemplo utilizaremos o editor Pfe32, e digitamos os comandos utilizadospara gerar a figura da senoide mostrada na figura anterior:

Observa-se que os comentarios são antecedidos pelo simbolo % e o nome doarquivo é labps_1.m, e no final de cada linha existe um ponto e virgula que não permitemostrar na tela o resultado da execução do comando.

Curso Básico de MATLAB 17

ma vez gravado este arquivo num subdiretório conhecido, podemos executar esteprograma a partir do ambiente MATLAB. Porém é importante estar no mesmosubdiretório onde está gravado o labps_1.m. Consideremos que o labps_1.m está nosubdiretorio \psinais\lab\ , então primeiro devemos mudar para aquele subdiretório:» cd \psinais\lab

para saber a existencia dos arquivos de extensão m:» whatM-files in the current directory U:\PSINAIS\LABlabps_1»

para executar labps_1.m»labps_1»

o resultado é a mesma senoide da figura anterior.

Criando funções m

A partir do workspace ou a partir de um programa principal de extensão m podemser chamados outros programas (subrotinas) que estão em forma de funções. Asfunções operam localmente e estão definidas no seguinte formato:

function [s1,s2,...,sn] = nome(e1,e2,...em)

Curso Básico de MATLAB 18

onde:

• e1,e2,...em: variáveis de entrada

• s1,s2,...sn: varáveis de saída

• nome: nome do arquivo m com que será gravado

Utilizando o exemplo anterior, se quer criar uma função chamado de senoide quetêm como:

• variáveis de entrada: instante inicial, instante final, amplitude e frequência deamostragem.

• variáveis de saída: vetores de tempo e senoide propriamente dito.

• também serão adicionados comentários necessários na utilização da função.

Para saber a utilização da função senoide, utiliza-se o comando help; que mostraráno workspace, todas as primeiras linhas da função definidas como comentários (aslinhas antecedidas pelo símbolo %)» help senoide function[t,x]=senoide(ti,tf,f0,A0,fs) Esta funcao gera uma senoide de ti a tf, de frequencia f0 e amplitude A0 a uma frequencia de amostragem fs. Como resposta tem-se os vetores tempo (t) e a senoide (x) propriamente dita. Obs. fs deve ser pelo menos duas vezes f0, convem pelo menos fs = 10*f0.»

Curso Básico de MATLAB 19

Criar uma função de nome temps.m onde estarão armazenados as temperaturas de 3cidades em um determinado mês de 31 dias.function T=temps()%function T=temps()%Esta funcao contem os dados de temperaturas em 3%cidades ao longo de um mes de 31 dias.

T=[12 8 18; 15 9 22; 12 5 19; 14 8 23; 12 6 22; 11 9 19; 15 9 15; 8 10 20; 19 7 18; 12 7 18; 14 10 19; 11 8 17; 9 7 23; 8 8 19; 15 8 18; 8 9 20; 10 7 17; 12 7 22; 9 8 19; 12 8 21; 12 8 20; 10 9 17; 13 12 18; 9 10 20; 10 6 22; 14 7 21; 12 5 22; 13 7 18; 15 10 23; 13 11 24;

12 12 22];

Uma vez gravado este arquivo com o nome de temps.m execute o help temps parasaber sobre o objetivo da função.

Executando uma função a partir do workspace

Uma função pode ser executada a partir do workspace, de um programa principal oua partir de uma outra função. Para executar-la, é necessário fornecer todas as variáveisde entrada, e podem ser obtidas todas as varíaves de saída (de acordo com a estrutura )ou apenas a primeira varíavel de saída quando não é seguido a estrutura.

Curso Básico de MATLAB 20

Por exemplo, se quer executar a função senoide a apartir do workspace, gerando umasenoide de 0 a 1 seg., de frequência 5 Hz e amplitue pico-pico de 4 unidades. A senoideserá digitalizada a uma frequencia de amostragem de 100 Hz.

• A estrutura desta função é,function[t,x]=senoide(ti,tf,f0,A0,fs)

• utilizando os mesmos valores do exemplo anterior, isto é,

» [t,x]=senoide(0,1,5,2,100);»

• para mostrar graficamente.» plot(t,x)» xlabel('tempo [seg]')» ylabel('x(t)')» title('senoide de 5 Hz')» grid»

0 0.2 0.4 0.6 0.8 1-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

tempo [seg]

x(t)

senoide de 5 Hz

.

Executando uma função a partir de um programa .m

As funções podem ser requisistadas a partir de um outro programa.

Para exemplificar, cria-se um programa de nome labps_2.m que realiza a mesmatarefa feita a partir workspace no exemplo anterior.

Curso Básico de MATLAB 21

%labps_2.m% Programa principal para% gerar uma senoide de 0 a 1 seg., de frequência 5 Hz% e amplitue pico-pico de 4 unidades, amostrando o sinal a% uma frequencia de 100 Hz.% A partir deste programam é chamado a funcao senoide(.)% que gera a senoide.% A funcao senoide tem a seguinte estrutura:% function[t,x]=senoide(ti,tf,f0,A0,fs)ti=0; %tempo inicialtf=1; %tempo finalf0=5; %frequencia do sinalA0=2; %amplitude do sinalfs=100; %frequencia de amostragem[t,x]=senoide(ti,tf,f0,A0,fs); %gerando a senoideplot(t,x)xlabel('tempo')ylabel('x')grid

Ao executar o labps_2, é gerada a figura:

0 0.2 0.4 0.6 0.8 1-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

tempo

x

Observa-se que esta figura, é a mesma aquela gerada a partir do workspace.

Gravando e carregando dados

Os dados contidos no workspace podem ser gravados no disco ou disquete da seguintemaneira:

• Verifique que variáveis estão no workspace.

Depois de executar o labps_2.m, o workspace contém:

Curso Básico de MATLAB 22

» labps_2» whoYour variables are:A0 fs t tif0 meupath tf x

• Escolha um nome para o arquivo de saída que conterá os dados, por exemplo,dados e a seguir as variáveis que serão gravados.

» save dados t x

• Para conferir, utilize o comando dir ou o comando what

Para carrregar dados no workspace a partir de um arquivo e depois verificar quevariáveis foram carregados:» load labps_2» whoYour variables are:A0 fs t tif0 meupath tf x

Personalização de eixos

O MATLAB permite controle total sobre a aparência e proporção dos eixos horizontale vertical de gráficos.

Comandos Descrição

axis([xmin xmax ymin ymax]) Valores mínimos e máximos dos eixos x e y.

axis(‘auto’) Retorna o escalonamento para o modo automático.

axis(axis)Congela a escala nos seus limites atuais, de maneiraque se o comando hold é ativado, gráficossubsequentes usam este padrão.

axis(‘square’) Torna ao gráfico atual quadrado.

axis(‘normal’) Desliga axis e square.

axis(‘off ’) Deliga etiquetas, marcadores e grade.

axis(‘on’) Liga etiquetas, marcadores e grade.

Curso Básico de MATLAB 23

Exemplo» x=1:10;» y=2*x;» plot(x,y);» grid;» xlabel(´x´);» ylabel(´y´);» title(´teste´);» grid;»

0 2 4 6 8 102

4

6

8

10

12

14

16

18

20

x

y

teste

» axis(´equal´);»

-5 0 5 10 152

4

6

8

10

12

14

16

18

20

x

y

teste

Curso Básico de MATLAB 24

» axis([2 8 2 18]);»

2 3 4 5 6 7 82

4

6

8

10

12

14

16

18

x

y

teste

Manipulação de matrizes

O MATLAB é uma poderosa ferramenta na manipulação matricial. Vejamosalguns desses exemplos:» A=[1 2 3;4 5 6;7 8 9]A = 1 2 3 4 5 6 7 8 9» A(3,2)ans = 8

Podemos trocar o elemento de uma matriz,» A(3,2)=-8A = 1 2 3 4 5 6 7 -8 9»

mudar os elementos de uma linha ou coluna,» A(2,:)=-2*[1 -1 1]A = 1 2 3 -2 2 -2 7 -8 9»

calcular a determinante da matriz,» det(A)ans = 16»

Curso Básico de MATLAB 25

calcular a transposta da matriz,» A'ans = 1 -2 7 2 2 -8 3 -2 9»

calcular a inversa da matriz,» inv(A)ans = 0.1250 -2.6250 -0.6250 0.2500 -0.7500 -0.2500 0.1250 1.3750 0.3750»

obter a diagonal da matriz,» diag(A)ans = 1 2 9»

Matrizes Especiais

Matriz de zeros.» A=zeros(4)A = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0»

Matriz de uns.» A=ones(3)A = 1 1 1 1 1 1 1 1 1»

» A=ones(2,3)A = 1 1 1 1 1 1»

Matriz aleatória.» A=rand(3)A = 0.2190 0.6793 0.5194 0.0470 0.9347 0.8310 0.6789 0.3835 0.0346»

» A=rand(3,1)

Curso Básico de MATLAB 26

A = 0.0535 0.5297 0.6711»

Matriz unitária.» A=eye(4)A = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1»

» A=eye(4,2)A = 1 0 0 1 0 0 0 0»

Gráficos utilizando: bar, stairs,stem» x=-1.9:.1:1.9;» y=exp(-x.*x);» bar(x,y)» xlabel('x')» ylabel('y')»

-2 -1 0 1 20

0.2

0.4

0.6

0.8

1

x

y

Curso Básico de MATLAB 27

» » stairs(x,y)» xlabel('x')» ylabel('y')»

-2 -1 0 1 20

0.2

0.4

0.6

0.8

1

x

y

» stem(x,y)» xlabel('x')» ylabel('y')»

-2 -1 0 1 20

0.2

0.4

0.6

0.8

1

x

y

Variáveis aleatórias

A seguir trataremos varáveis aleatórias.

Seja um processo aleatório:» x=randn(50,1);» stem(x,’:’)»

Curso Básico de MATLAB 28

0 10 20 30 40 50-3

-2

-1

0

1

2

3

O histograma deste processo é:» hist(x)»

-3 -2 -1 0 1 2 30

1

2

3

4

5

6

7

8

9

A média do processo é,» mean(x)ans = -0.0058»

A variância do processo é,» cov(x)ans = 1.3812

Curso Básico de MATLAB 29

»

O desvio padrão do processo é:» std(x)ans = 1.1753»

Ajuste de curvas

No MATLAB existe uma função de ajuste de curvas chamada polyfit. São necessáriosos vetores x, y e a ordem ou grau do polinômio de aproximação.» x=0:.1:1;» y=[-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];» stem(x,y,':')» xlabel('x')» ylabel('y')»

0 0.2 0.4 0.6 0.8 1-2

0

2

4

6

8

10

12

x

y

Queremos ajustar a curva utilizando um polinômio quadrático.» yp=polyfit(x,y,2)yp = -9.8108 20.1293 -0.0317»Isto equivale a criar um polinômio do tipo 0317.01293.208108.9 2 −+−= xxyp . Para

comparar as duas curvas geramos o eixo x e y.» xp=linspace(0,1,100);» yp=polyval(p,xp);» plot(x,y,'o',xp,yp,':')

Curso Básico de MATLAB 30

»

0 0.2 0.4 0.6 0.8 1-2

0

2

4

6

8

10

12

Podemos estimar um valor intermediário não existente na tabela. Consideremos oexemplo anterior.» [x' y']ans = 0 -0.4470 0.1000 1.9780 0.2000 3.2800 0.3000 6.1600 0.4000 7.0800 0.5000 7.3400 0.6000 7.6600 0.7000 9.5600 0.8000 9.4800 0.9000 9.3000 1.0000 11.2000»

Observemos que para o valor de x = 0.35 não está definido. Então podemos estimar ovalor de y correspondente.» ye=interp1(x,y,.35)ye = 6.6200»

Geração de sinais

Impulso

A função impulso está definida como:

≠=

=−0

00 ,0

,1)(

tttt

ttδ

Curso Básico de MATLAB 31

Para criar uma função impulso é necessário definir o tempo T total de e o intervalo dediscretização dt.

Por exemplo consideremos a seguinte função impulso,

≠=

=−1,01,1

)1(tt

tδ , sendo o

tempo 0 seg ≤ t < 5 seg. e o intervalo de discretização dt = 0.2 seg.» dt=.2;» t=0:dt:5-dt;» N=length(t);» x=zeros(1,N);» [t0,n0]=find(t==1);» x(n0)=1;» stem(t,x,':')» whitebg» stem(t,x,':')» xlabel('tempo[seg]')» title('impulso')»

0 1 2 3 4 50

0.2

0.4

0.6

0.8

1

tempo[seg]

impulso

Degrau

A função degrau está definida como:

⟨≥

=−0

00 ,0

,1)(

tttt

ttu

Para criar uma função degrau é necessário definir o tempo total de e o intervalo dediscretização dt.

Por exemplo consideremos a seguinte função degrau,

⟨≥

=−2,02,1

)2(tt

tu , sendo o

tempo 0 seg ≤ t < 5 seg. e o intervalo de discretização dt = 0.2 seg.

Curso Básico de MATLAB 32

» dt=.2;» t=0:dt:5-dt;» N=length(t);» x=zeros(1,N);» [t0,n0]=find(t==2)» x(n0:N)=ones(size(n0:N));» stem(t,x,':')» xlabel('tempo[seg]')» title('passo')» »

0 1 2 3 4 50

0.2

0.4

0.6

0.8

1

tempo[seg]

passo

Periódico

A função periódica está definida como:

)2()( 00 tfsinAtx π=

Para criar uma função periódica são necessários definir: a amplitude A0, a frequência dosinal e o intervalo de discretização dt

Por exemplo consideremos uma seguinte função periódica , )100()( tsintx π= , sendo o

tempo 0 seg ≤ t ≤ 0.5 seg. e a frequência de amostragem de fs = 1000 kHz. Fazendouma analogia com a função padrão, A0 =1; 2πf0 = 100π, então, f0 = 50. Por outro ladofs = 1/dt = 1000

» » fs=1000;» dt=1/fs;» f0=50;» t=0:dt:.5;» x=sin(2*pi*f0*t);» stem(t(1:50),x(1:50),':')»

0 0.01 0.02 0.03 0.04 0.05-1

-0.5

0

0.5

1

tempo [s]

sin(2*pi*50*t)

Curso Básico de MATLAB 33

Análise espectral

O MATLAB oferece a ferramenta para a análise espectral através transformada discretade Fourier utilizando algoritmos rápidos conhecidos como FAST FOURIERTRANSFORM (FFT). Quando ralizemos a análise espectral usaremos o termo de FFT.

Como exemplo calculemos o espectro do sinal periódico )100()( tsintx π=

» fs=1000;» N=length(x);» df=fs/N;» f=0:df:fs-df;» X=fft(x);» Y=(1/N)*abs(X);» subplot(2,1,1)» stem(t,Y,':')subplot(2,1,2)stem(f(1:N/4),Y(1:N/4),':')» xlabel('freq. [Hz]')»

0 200 400 600 800 10000

0.5

0 50 100 150 200 2500

0.5

freq. [Hz]

Consideremos um outro exemplo calculemos o espectro do sinal periódico ruidoso)(*2)1502()502()( trandtsintsintx ++= ππ

»»x=sin(2*pi*50*t)+sin(2*pi*150*t);» y=x+2*randn(size(x));» subplot(2,1,1)» plot(t(1:100),y(1:100))» xlabel('tempo [s]');» X=fft(x);» Y=(1/N)*abs(X);» subplot(2,1,2)» plot(f(1:N/4),Y(1:N/4))» xlabel('freq. [Hz]')»

0 0.02 0.04 0.06 0.08 0.1-10

0

10

tempo [s]

0 50 100 150 200 2500

0.5

freq. [Hz]

Curso Básico de MATLAB 34

Análise espectral de sinais transitórios

Sinal de pressão sonora de voz dizendo "tá" medido com um microfone de placade som de computador e adquirido com freqüência de amostragem de 11025 Hz e 8bits de quantização.

%trn.m% sinal transitório e sua%densidade% espectral de energia[y,Fs]=wavread('ta.wav');N=4096;t=(0:4095)/Fs;T=N/Fs;f=(0:(N/2-1))*Fs/N;Y=y(351:N+350);S=fft(Y)/N;subplot(211),plot(t,Y)xlabel('tempo [s]')ylabel('[V]')subplot(212),plot(f,2*abs(S(1:N/2)*T).^2)xlabel('freq. [Hz]')ylabel('[V^2*s/Hz]')

0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4-0.2

-0.1

0

0.1

0.2

tempo [s]

[V]

0 1000 2000 3000 4000 5000 60000

0.5

1

1.5

2x 10

-6

freq. [Hz]

[V^2

*s/H

z]

Análise espectral de sinais aleatórios

Sinal de pressão sonora de voz dizendo "shshshsh..." medido com um microfone deplaca de som de computador e adquirido com freqüência de amostragem de 11025 Hz e8 bits de quantização.%alt.m% sinal aleatório e sua DEP[y,Fs]=wavread('sh.wav');N=2048;t=(0:N-1)/Fs;T=N/Fs;f=(0:(N/2-1))*Fs/N;S=zeros(N,1);H=hanning(N);ni=1;count=0;while (ni+N-1) <= length(y), Y=y(ni:ni+N-1); Y=Y.*H; S=S+2*abs(fft(Y)/N).^2*T; count=count+1; ni=ni+N/2;endsubplot(211),plot(t,y(1:N))xlabel('tempo [s]')ylabel('[V]')subplot(212),plot(f,S(1:N/2))xlabel('freqüência [Hz]')ylabel('[V^2/Hz]')

0 0.05 0.1 0.15 0.2-0.2

-0.1

0

0.1

0.2

tempo [s]

[V]

0 1000 2000 3000 4000 5000 60000

1

2

3x 10

-6

freqüência [Hz]

[V^2

/Hz]

Curso Básico de MATLAB 35

Gráficos de linha

Os gráficos bidimensionais podem ser estendidos para o espaço tridimensional. Porexemplo podemos gerar uma helice de 5 espirais a passos de pi/50. Utilizaremoscordenadas paramétricas (sin(t), cos(t),t) para representar um ponto.

» t=0:pi/50:5*(2*pi);» plot3(sin(t),cos(t),t)» title('helice')» xlabel('sin(t)')» ylabel('cos(t)')» zlabel('t')»

-1

0

1

-1

0

10

10

20

30

40

sin(t)cos(t)

t

helice

Superfícies

Criaremos uma superfície onde os eixos x e y estão divididos em grades retangulares e a

altura é dada por 22

22 )(

yx

yxsinz

++= que é uma função complexa. Os eixos x e y

variarão de –10 até 10 a intervalos de 0.5. Para evitar a divisão por zero será necessárioacrescentar um valor pequeno ao numerador e ao denominador.

Curso Básico de MATLAB 36

» x=-10:.5:10;» y=-10:.5:10;» [X,Y]=meshgrid(x,y);» Z=sin(sqrt(X.^2+Y.^2))./(sqrt(X.^2+Y.^2)+eps);» mesh(X,Y,Z)» xlabel('x')» ylabel('Y')» xlabel('X')» zlabel('Z')»

-10

0

10

-10

0

10-0.5

0

0.5

1

XY

Z

Podem ser obtidos gráficos de contorno que mostram as linhas de elevação. Nesteexemplo queremos dividir em 100 partes ou 100 fatias.» contour(X,Y,Z,100)»

podem ser gerados também os contornos tridimensionais.» contour3(X,Y,Z,100)»

As figuras tridimensionais podem ser vistas de diferentes pontos utilizando o comandoview([x,y,z])

» view([-10 –10 5])»

Curso Básico de MATLAB 37

-10 -5 0 5 10-10

-5

0

5

10

X

Y

Ler uma aarquivo jpg :

» alfa=imread('image05.jpg');» image(alfa)»

Curso Básico de MATLAB 38