Anda di halaman 1dari 38

Curso Bsico de MATLAB

CURSO BSICO DE MATLAB


CONTEDO
CURSO BSICO DE MATLAB .................................................................................... 1
INTRODUO ............................................................................................................. 2
TUTORIAL BSICO..................................................................................................... 5
AMBIENTE MATLAB (WORKSPACE)................................................................................. 5
ATRIBUIO DE UM VALOR NUMRICO A UMA VARIVEL .................................................... 5
OPERAES ARITMTICAS .............................................................................................. 6
LIMPAR O WORKSPACE DO MATLAB............................................................................... 6
NMEROS COMPLEXOS................................................................................................... 7
SALVANDO DADOS .......................................................................................................... 7
CARREGANDO DADOS ..................................................................................................... 8
ATRIBUIR UM VETOR DE VALORES NUMRICOS A UMA VARIVEL ........................................ 8
OPERAES ELEMENTARES COM OS ELEMENTOS DE VETORES ......................................... 8
OPERAES COM VETORES ............................................................................................ 8
TAMANHO OU COMPRIMENTO DE VETORES....................................................................... 9
GERAO DE VETORES................................................................................................... 9
GERAO DE GRFICOS 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
OPERAES COM VETORES (ARRAYS) ........................................................................... 14
COMANDO FIND(X)........................................................................................................ 15
COMANDOS MAX(X), MIN(X)........................................................................................... 15
CRIAR ARQUIVOS DE EXTENSO M ................................................................................. 16
CRIANDO FUNES M ................................................................................................... 17
EXECUTANDO UMA FUNO A PARTIR DO WORKSPACE ................................................... 19
EXECUTANDO UMA FUNO A PARTIR DE UM PROGRAMA .M ............................................ 20
GRAVANDO E CARREGANDO DADOS .............................................................................. 21
PERSONALIZAO DE EIXOS ......................................................................................... 22
EXEMPLO..................................................................................................................... 23
MANIPULAO DE MATRIZES ......................................................................................... 24
MATRIZES ESPECIAIS ................................................................................................... 25
GRFICOS UTILIZANDO: BAR, STAIRS,STEM .................................................................... 26
VARIVEIS ALEATRIAS ................................................................................................ 27
AJUSTE DE CURVAS ...................................................................................................... 28
GERAO DE SINAIS .................................................................................................... 30
IMPULSO ...................................................................................................................... 30
DEGRAU ...................................................................................................................... 30
PERIDICO .................................................................................................................. 31
ANLISE ESPECTRAL .................................................................................................... 32
ANLISE ESPECTRAL DE SINAIS TRANSITRIOS .............................................................. 33
ANLISE ESPECTRAL DE SINAIS ALEATRIOS .................................................................. 33
GRFICOS DE LINHA ..................................................................................................... 34
SUPERFCIES ............................................................................................................... 34

Curso Bsico de MATLAB

INTRODUO
MATLAB um software para anlise matemtica voltado para processamento
numrico (apesar de ter um mdulo de processamento simblico baseado no programa
MAPLE). O ponto forte do MATLAB so as bibliotecas matemticas de lgebra
matricial, os recursos grficos e a abertura para desenvolvimento de mdulos
(toolboxes) por terceiros. A comunidade acadmica de controle elegeu o MATLAB sua
plataforma principal e, por isso, a gama de mdulos nesta rea muito grande. O
MATLAB tem um programa companheiro que tem uma interface grfica onde
circuitos de simulao e controle podem ser implementados de maneira extremamente
amigvel, o SIMULINK.
Os mdulos do MATLAB comercializados pela MATHWORKS (muitos outros podem
ser obtidos gratuitamente na web ou ainda adquiridos diretamente de seus produtores
so 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 Bsico de MATLAB

NAG
Neural Network
Optimization
Partial Differential Equation
QFT Control Design
Robust Control
Signal Processing
Spline
Statistics
Symbolic/Extended Symbolic Math
System Identification
Wavelet

Alm dos toolboxes do MATLAB, existem blocksets (conjuntos de blocos) do


SIMULINK:
DSP
Fixed Point
Nonlinear Control Design
Power System Blockset
Com o ambiente SIMULINK possvel, utilizando algumas placas de hardware
eletrnico e o software Real Time Workshop, realizar simulaes envolvendo sinais
eltricos externos, de sistemas fsicos reais. Com isso possvel fazer o que se
denomina simulaes com hardware in the loop. Por exemplo, pode-se simular um
veculo onde a suspenso ativa usando um veculo real e implementando o
controlador em SIMULINK ou vice-versa.

Curso Bsico de MATLAB

A estrutura do MATLAB mostrada na figura abaixo. recomendvel visitar a pgina


da MATHWORKS na web: http://www.mathworks.com para maiores informaes.

TUTORIAL BSICO
MATLAB trabalha bsicamente com matrizes retangulares cujos elementos podem
eventualmente ser complexos. Um escalar interpretado como uma matriz de dimenso
1x1, um vetor linha de N elementos como uma matriz de dimenso Nx1 e um vetor
coluna como uma matriz de dimenso 1xN.
Ambiente MATLAB (workspace)
Ao abrir o MATLAB, voc estar no ambiente de trabalho tambm chamado de
workspace do MATLAB como mostra na seguinte figura:

Ambiente de trabalho do MATLAB ( workspace)

Curso Bsico de MATLAB

Atribuio de um valor numrico a uma varivel


Queremos atribuir o valor 3 varavel a
a=3 e presione a tecla ENTER , ento aparecer ...
a =
3

Para observar as variveis e dados existentes no workspace, utilizamos o comando


Who. Assim por exemplo:
who
Your variables are:
a
meupath

Se queremos saber o contedo das variveis listadas:


a=3
a =
3

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

Para representar com 16 dgitos, utilizamos o comando format long


format long
ans
ans =
1.60000000000000

Para maiores informaes utilize help format


help format

Limpar o workspace do MATLAB


Limpar a varivel a do workspace
clear a

Para confirmar a eliminao da varivel


who
Your variables are:

Se queremos limpar o workspace


clear

Curso Bsico de MATLAB

Funes matemticas elementares


abs(x)
acos(x)
acosh(x)
asin(x)
asinh(x)
atan(x)
atanh(x)
ceil(x)
conj(x)
cos(x)
cosh(x)
exp(x)
fix(x)
floor(x)
imag(x)
log(x)
log10(x)
real(x)
rem(x,y)
round(x)
sign(x)
sin(x)
sinh(x)
sqrt(x)
tan(x)
tanh(x)

Valor absoluto ou mdulo de um nmero complexo


Arco coseno
Arco coseno hiperblico
Arco seno
Arco seno hiperblico
Arco tangente
Arco tangente hiperblico
Arredonda ao inteiro mais infinito
Conjugado complexo
Coseno
Coseno hiperblico
Exponencial
Arredonda ao inteiro mais prximo do zero
Arredonda ao inteiro menos infinito
Parte imaginria de um nmero complexo
Logaritmo natural
Logaritmo na base 10
Parte real de um nmero complexo
Resto da diviso de x por y
Arredonda ao inteiro mais prximo
Funo sinal (-1,0,1)
seno
Seno hiperblico
Raiz quadrada
Tangente
Tangente hiperblico

Nmeros complexos
Sejam os nmeros complexos: a = 1 + i*2 e b = 1 - i*2
a=1+i*2
a =
1.0000 + 2.0000i
b=1-i*2
b =
1.0000 - 2.0000i
real(a)
ans =
1
imag(a)
ans =
2

Salvando dados
Queremos salvar as variveia 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 Bsico de MATLAB

!dir a:

Carregando dados
Queremos carregar o arquivo complexo do disco A
load a:complexo

Verificamos o contedo
Who
Your variables are:
a
b

Atribuir um vetor de valores numricos a uma varivel


x=[6 2 5 7]
x =
6
2
y=[-1 0 1 2]
y =
-1
0

Operaes elementares com os elementos de vetores


Soma e subtrao:
x(1)+x(3)-x(2)
ans =
9

Produto e diviso:
x(1)*x(3)/x(2)
ans =
15

Operaes com vetores


Soma e subtrao:
x-y
ans =
7

14

Produto e diviso:
x.*y
ans =
-6
y./x
ans =
-0.1667

0.2000

0.2857

Curso Bsico de MATLAB

Operaes mistas:
y-2
ans =
-3
-2
-1

x+y-2
ans =
3
0
4

3*x
ans =
18
6
15

3*x.*y
ans =
-18
0
15

(3*x.*y)./x+(y-2)
ans =
-6
-2
2

21

42

Gerao de novas variveis


z=[x 2*y]
z =
6
2
5

v=(3*x.*y)./x+(y-2)
v =
-6
-2
2

-2

Tamanho ou comprimento de vetores


size(x)
ans =
1
4
size(z)
ans =
1
8
length(z)
ans =
8
length(y)
ans =
4

Gerao de vetores
Gerar o vetor t de 0 a 10 a intervalos de 2 unidades
t=0:2:10
t =
0
2

uma outra maneira:


t=(0:5)*2

10

Curso Bsico de MATLAB

t =
0

10

Gerar o vetor x de 0 a 5 a intervalos de 1 unidade


x=0:1:5
x=
0 1

ou
x=0:5
x =
0

Gerao de grficos com os vetores


Mostrar graficamente o vetor t
plot(t)

10
8
6
4
2
0

Para tornar o fundo da figura branco:


whitebg

Mostrar grficamente o vetor x


plot(x)

Curso Bsico de MATLAB

10

5
4
3
2
1
0

Mostrar graficamente o vetor x em funo do vetor t


plot(t,x)
xlabel('t')
ylabel('x')
title('FIGURA 1')
grid

FIGURA 1
5
4.5
4
3.5
3
x 2.5
2
1.5
1
0.5
0

6
t

10

Curso Bsico de MATLAB

11

Loops do tipo for - end


Os comandos instanciados entre for e end so executados enquanto a condio for
verdadeira. Isto :
for expresso
comandos
end

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

Loops do tipo while - end


Os comandos instanciados entre while-end so executados enquanto a expresso for
verdadeira. Isto :
while expresso
comandos
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 expresso so executados desde que ela seja
verdadeira. A estrutura condicional if-then tem o seguinte formato:
if expresso

Curso Bsico de MATLAB

comandos
elseif expresso
comandos
elseif expresso
comandos
.
.
else
comandos
end

12

Curso Bsico 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 expresso so executados desde que ela seja
verdadeira. A estrutura condicional if-then tem o seguinte formato:

switch expresso
case {expresso1}
comandos
case {expresso2}
comandos
.
.
otherwise
comandos
end

exemplo:
n=1;
switch n
case {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 Bsico de MATLAB

14

j=1;% indice para os momentos de mudanca de sinal


while 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;
end
w
[w' x(w)' y(w)' z(w)']

Operaes com vetores (arrays)


x=[ 1 2 3];
y=[ 4 5 6];

x= 1
2
3
(x+y)= 5
7
9

x= 4
5
6
x+ y= 5
7
9

x y = -3 3 -3

x+2=345

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 Bsico de MATLAB

15

Comando find(x)
find(x) retorna os ndices cujos valores do vetor x so no nulos.
Se x = [10 2 3 0 7 9 0]
find(x) retornar: 1 2 3 5 6
Se houver alguma alguma condio com relao aos valores do vetor x, ento este
comando retornar ndices para os quais a condio verdadeira. Assim por exemplo se
quer obter os indices para os quais os valores do vetor x so nulos. De maneira que, o
comando adequado seria:
find(x == 0), o qual retornar 4 7
Ainda, podemos situar a condio mais elaborado. Assim, por exemplo se quer obter os
indices 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 frequncia 5 Hz e amplitue pico-pico de 4
unidades. 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 Bsico de MATLAB

16

2
1.5
1
0.5
x

0
-0.5
-1
-1.5
-2

0.2

0.4

0.6

0.8

tempo

Criar arquivos de extenso m


O conjunto de comandos utilizados para gerar a figura anterior podem ser
armazenadas num arquivo.m utilizando qualquer editor. muito comum utilizar o
editor Pfe32 ou o editor WordPad.
Como exemplo utilizaremos o editor Pfe32, e digitamos os comandos utilizados
para gerar a figura da senoide mostrada na figura anterior:
Observa-se que os comentarios so antecedidos pelo simbolo % e o nome do
arquivo labps_1.m, e no final de cada linha existe um ponto e virgula que no permite
mostrar na tela o resultado da execuo do comando.

Curso Bsico de MATLAB

17

ma vez gravado este arquivo num subdiretrio conhecido, podemos executar este
programa a partir do ambiente MATLAB. Porm importante estar no mesmo
subdiretrio onde est gravado o labps_1.m. Consideremos que o labps_1.m est no
subdiretorio \psinais\lab\ , ento primeiro devemos mudar para aquele subdiretrio:
cd \psinais\lab

para saber a existencia dos arquivos de extenso m:


what
M-files in the current directory U:\PSINAIS\LAB
labps_1

para executar labps_1.m


labps_1

o resultado a mesma senoide da figura anterior.

Criando funes m
A partir do workspace ou a partir de um programa principal de extenso m podem
ser chamados outros programas (subrotinas) que esto em forma de funes. As
funes operam localmente e esto definidas no seguinte formato:
function [s1,s2,...,sn] = nome(e1,e2,...em)

Curso Bsico de MATLAB

18

onde:
e1,e2,...em: variveis de entrada
s1,s2,...sn: varveis de sada
nome: nome do arquivo m com que ser gravado
Utilizando o exemplo anterior, se quer criar uma funo chamado de senoide que
tm como:
variveis de entrada: instante inicial, instante final, amplitude e frequncia de
amostragem.
variveis de sada: vetores de tempo e senoide propriamente dito.
tambm sero adicionados comentrios necessrios na utilizao da funo.

Para saber a utilizao da funo senoide, utiliza-se o comando help; que mostrar
no workspace, todas as primeiras linhas da funo definidas como comentrios (as
linhas antecedidas pelo smbolo %)
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 Bsico de MATLAB

19

Criar uma funo de nome temps.m onde estaro armazenados as temperaturas de 3


cidades em um determinado ms 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 para
saber sobre o objetivo da funo.

Executando uma funo a partir do workspace


Uma funo pode ser executada a partir do workspace, de um programa principal ou
a partir de uma outra funo. Para executar-la, necessrio fornecer todas as variveis
de entrada, e podem ser obtidas todas as varaves de sada (de acordo com a estrutura )
ou apenas a primeira varavel de sada quando no seguido a estrutura.

Curso Bsico de MATLAB

20

Por exemplo, se quer executar a funo senoide a apartir do workspace, gerando uma
senoide de 0 a 1 seg., de frequncia 5 Hz e amplitue pico-pico de 4 unidades. A senoide
ser digitalizada a uma frequencia de amostragem de 100 Hz.
A estrutura desta funo ,
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
senoide de 5 Hz
2
1.5
1
0.5

x(t)

0
-0.5
-1
-1.5
-2
0

0.2

0.4
0.6
tempo [seg]

0.8

.
Executando uma funo a partir de um programa .m
As funes podem ser requisistadas a partir de um outro programa.
Para exemplificar, cria-se um programa de nome labps_2.m que realiza a mesma
tarefa feita a partir workspace no exemplo anterior.

Curso Bsico de MATLAB

21

%labps_2.m
% Programa principal para
% gerar uma senoide de 0 a 1 seg., de frequncia 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 inicial
tf=1; %tempo final
f0=5; %frequencia do sinal
A0=2; %amplitude do sinal
fs=100; %frequencia de amostragem
[t,x]=senoide(ti,tf,f0,A0,fs); %gerando a senoide
plot(t,x)
xlabel('tempo')
ylabel('x')
grid

Ao executar o labps_2, gerada a figura:


2
1.5
1
0.5
x

0
-0.5
-1
-1.5
-2

0.2

0.4

0.6

0.8

tempo

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 seguinte
maneira:
Verifique que variveis esto no workspace.
Depois de executar o labps_2.m, o workspace contm:

Curso Bsico de MATLAB


labps_2
who
Your variables are:
A0
fs
t
f0
meupath
tf

22

ti
x

Escolha um nome para o arquivo de sada que conter os dados, por exemplo,
dados e a seguir as variveis que sero 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 que
variveis foram carregados:
load labps_2
who
Your variables are:
A0
fs
t
f0
meupath
tf

ti
x

Personalizao de eixos
O MATLAB permite controle total sobre a aparncia e proporo dos eixos horizontal
e vertical de grficos.
Comandos

Descrio

axis([xmin xmax ymin ymax])

Valores mnimos e mximos dos eixos x e y.

axis(auto)

Retorna o escalonamento para o modo automtico.

axis(axis)

Congela a escala nos seus limites atuais, de maneira


que se o comando hold ativado, grficos
subsequentes usam este padro.

axis(square)

Torna ao grfico atual quadrado.

axis(normal)

Desliga axis e square.

axis(off )

Deliga etiquetas, marcadores e grade.

axis(on)

Liga etiquetas, marcadores e grade.

Curso Bsico de MATLAB

23

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

teste
20
18
16
14
12
y

10
8
6
4
2

10

axis(equal);

teste
20
18
16
14
y

12
10
8
6
4
2

-5

10
x

15

Curso Bsico de MATLAB

24

axis([2 8 2 18]);

teste
18
16
14

12
10
8
6
4
2

5
x

Manipulao de matrizes
O MATLAB uma poderosa ferramenta na manipulao matricial. Vejamos
alguns 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)=-8
A =
1
2
4
5
7
-8

3
6
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 Bsico de MATLAB

25

calcular a transposta da matriz,


A'
ans =
1
2
3

-2
2
-2

7
-8
9

calcular a inversa da matriz,


inv(A)
ans =
0.1250
0.2500
0.1250

-2.6250
-0.7500
1.3750

-0.6250
-0.2500
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 aleatria.
A=rand(3)
A =
0.2190
0.0470
0.6789

A=rand(3,1)

0.6793
0.9347
0.3835

0.5194
0.8310
0.0346

Curso Bsico de MATLAB

26

A =
0.0535
0.5297
0.6711

Matriz unitria.
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

Grficos utilizando: bar, stairs,stem


x=-1.9:.1:1.9;
y=exp(-x.*x);
bar(x,y)
xlabel('x')
ylabel('y')

0.8

0.6
y

0.4

0.2

0
-2

-1

0
x

Curso Bsico de MATLAB

27

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

0.8

0.6

0.4

0.2

0
-2

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

-1

0
x

-1

0
x

0.8

0.6

0.4

0.2

0
-2

Variveis aleatrias
A seguir trataremos varveis aleatrias.
Seja um processo aleatrio:
x=randn(50,1);
stem(x,:)

Curso Bsico de MATLAB

28

3
2
1
0
-1
-2
-3

10

20

30

40

50

O histograma deste processo :


hist(x)

9
8
7
6
5
4
3
2
1
0
-3

A mdia do processo ,
mean(x)
ans =
-0.0058

A varincia do processo ,
cov(x)
ans =
1.3812

-2

-1

Curso Bsico de MATLAB

29

O desvio padro do processo :


std(x)
ans =
1.1753

Ajuste de curvas
No MATLAB existe uma funo de ajuste de curvas chamada polyfit. So necessrios
os vetores x, y e a ordem ou grau do polinmio de aproximao.

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

12
10
8

6
4
2
0
-2
0

0.2

0.4

0.6

0.8

Queremos ajustar a curva utilizando um polinmio quadrtico.


yp=polyfit(x,y,2)
yp =
-9.8108
20.1293

-0.0317

Isto equivale a criar um polinmio do tipo yp = 9.8108 x 2 + 20.1293x 0.0317 . 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 Bsico de MATLAB

30

12
10
8
6
4
2
0
-2
0

0.2

0.4

0.6

0.8

Podemos estimar um valor intermedirio no existente na tabela. Consideremos o


exemplo anterior.
[x' y']
ans =
0
0.1000
0.2000
0.3000
0.4000
0.5000
0.6000
0.7000
0.8000
0.9000
1.0000

-0.4470
1.9780
3.2800
6.1600
7.0800
7.3400
7.6600
9.5600
9.4800
9.3000
11.2000

Observemos que para o valor de x = 0.35 no est definido. Ento podemos estimar o
valor de y correspondente.
ye=interp1(x,y,.35)
ye =
6.6200

Gerao de sinais
Impulso
A funo impulso est definida como:
1, t = t 0
(t t 0 ) =
0, t t 0

Curso Bsico de MATLAB

31

Para criar uma funo impulso necessrio definir o tempo T total de e o intervalo de
discretizao dt.
1, t = 1
, sendo o
Por exemplo consideremos a seguinte funo impulso, (t 1) =
0
,
t

tempo 0 seg t < 5 seg. e o intervalo de discretizao 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')

impulso
1

0.8

0.6

0.4

0.2

2
3
tempo[seg]

Degrau
A funo degrau est definida como:
1, t t 0
u (t t 0 ) =
0, t t 0

Para criar uma funo degrau necessrio definir o tempo total de e o intervalo de
discretizao dt.
1, t 2
Por exemplo consideremos a seguinte funo degrau, u (t 2) =
, sendo o
0, t 2
tempo 0 seg t < 5 seg. e o intervalo de discretizao dt = 0.2 seg.

Curso Bsico de MATLAB

32

passo

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.8

0.6

0.4

0.2

0
0

2
3
tempo[seg]

Peridico
A funo peridica est definida como:
x(t ) = A0 sin (2f 0 t )
Para criar uma funo peridica so necessrios definir: a amplitude A0, a frequncia do
sinal e o intervalo de discretizao dt
Por exemplo consideremos uma seguinte funo peridica , x(t ) = sin(100t ) , sendo o
tempo 0 seg t 0.5 seg. e a frequncia de amostragem de fs = 1000 kHz. Fazendo
uma analogia com a funo padro, A0 =1; 2f0 = 100, ento, f0 = 50. Por outro lado
fs = 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),':')

sin(2*pi*50*t)
1

0.5

-0.5

-1
0

0.01

0.02
0.03
tempo [s]

0.04

0.05

Curso Bsico de MATLAB

33

Anlise espectral
O MATLAB oferece a ferramenta para a anlise espectral atravs transformada discreta
de Fourier utilizando algoritmos rpidos conhecidos como FAST FOURIER
TRANSFORM (FFT). Quando ralizemos a anlise espectral usaremos o termo de FFT.
Como exemplo calculemos o espectro do sinal peridico x(t ) = sin(100t )
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.5

200

400

600

800

1000

50

100
150
freq. [Hz]

200

250

0.5

Consideremos um outro exemplo calculemos o espectro do sinal peridico ruidoso


x(t ) = sin (250t ) + sin(2150t ) + 2 * rand (t )

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

10

-10

0.02

0.04
0.06
tempo [s]

0.08

0.1

50

100
150
freq. [Hz]

200

250

0.5

Curso Bsico de MATLAB

34

Anlise espectral de sinais transitrios


Sinal de presso sonora de voz dizendo "t" medido com um microfone de placa
de som de computador e adquirido com freqncia de amostragem de 11025 Hz e 8
bits de quantizao.
0.2

[V]

0.1
0
-0.1
-0.2

2
[V^2*s/Hz]

%trn.m
% sinal transitrio 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
x 10

0.05

0.1

0.15

-6

0.2
0.25
tempo [s]

0.3

0.35

0.4

1.5
1
0.5
0

1000

2000

3000
freq. [Hz]

4000

5000

6000

Anlise espectral de sinais aleatrios


Sinal de presso sonora de voz dizendo "shshshsh..." medido com um microfone de
placa de som de computador e adquirido com freqncia de amostragem de 11025 Hz e
8 bits de quantizao.
0.2

[V]

0.1
0
-0.1
-0.2
0

0.05

0.1
tempo [s]

-6

3
[V^2/Hz]

%alt.m
% sinal aleatrio 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;
end
subplot(211),plot(t,y(1:N))
xlabel('tempo [s]')
ylabel('[V]')
subplot(212),plot(f,S(1:N/2))
xlabel('freqncia [Hz]')
ylabel('[V^2/Hz]')

x 10

0.15

0.2

2
1
0
0

1000

2000

3000
4000
freqncia [Hz]

5000

6000

Curso Bsico de MATLAB

35

Grficos de linha
Os grficos bidimensionais podem ser estendidos para o espao tridimensional. Por
exemplo podemos gerar uma helice de 5 espirais a passos de pi/50. Utilizaremos
cordenadas paramtricas (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')

helice

40

30
20
10
0
1
1
0

cos(t)

-1

-1

sin(t)

Superfcies
Criaremos uma superfcie onde os eixos x e y esto divididos em grades retangulares e a
altura dada por z =

sin( x 2 + y 2 )
x2 + y2

que uma funo complexa. Os eixos x e y

variaro de 10 at 10 a intervalos de 0.5. Para evitar a diviso por zero ser necessrio
acrescentar um valor pequeno ao numerador e ao denominador.

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

0.5
0
-0.5
10
10
0
Y

0
-10

-10

Podem ser obtidos grficos de contorno que mostram as linhas de elevao. Neste
exemplo queremos dividir em 100 partes ou 100 fatias.
contour(X,Y,Z,100)

podem ser gerados tambm os contornos tridimensionais.


contour3(X,Y,Z,100)

As figuras tridimensionais podem ser vistas de diferentes pontos utilizando o comando


view([x,y,z])
view([-10 10 5])

Curso Bsico de MATLAB

37

10

-5

-10
-10

Ler uma aarquivo jpg :


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

-5

0
X

10

Curso Bsico de MATLAB

38

Anda mungkin juga menyukai