You are on page 1of 10

EL9720 Processamento Digital de Sinais

Aula 01: Introduo ao MatLab


1. Introduo
Em Processamento Digital de Sinais, tcnicas de amostragem de sinais,
transformadas discretas, filtros digitais e, principalmente, algoritmos que realizam
estas tcnicas so estudados.
O MatLab uma ferramenta muito til neste sentido, possibilitando tanto o
desenvolvimento, quanto a simulao de projetos em engenharia em geral.
O principal motivo deste sucesso a utilizao macia de vetores e matrizes
(MatLab = MATrix LABoratory) para representao de dados, que praticamente
elimina a necessidade de utilizao de laos FOR e WHILE simplificando e
acelerando os programas.
O objetivo desta primeira aula rever alguns conceitos de programao em
MatLab.

2. Conhecendo a rea de Trabalho:


A rea de trabalho do MatLab dividida em vrias partes, cujas posies
variam de verso para verso. As principais so:

Current Directory - apresenta os documentos e arquivos existentes na


pasta em que se est trabalhando
Workspace - apresenta as variveis criadas pelo algoritmo.
Command History - apresenta o histrico dos comandos utilizados.
Command Window - executa comandos rpidos e apresenta os
resultados e valores das variveis.

O objetivo destas janelas analisar o funcionamento dos algoritmos como


evoluo dos valores das variveis, verificao da sintaxe dos comandos e
utilizao do comando HELP. Ou seja, so janelas voltadas para testes, rascunhos
e pequenos algoritmos.
A elaborao e desenvolvimento de programas mais complexos deve ser
realizada a partir da gerao de arquivos de extenso .m.

3. Arquivos-m
Arquivos-m so arquivos de texto que contm comandos do MatLab e cujo
nome apresenta a seguinte forma:
.
Eles podem ser criados e modificados atravs de qualquer editor de texto
capaz de salvar arquivos ASCII.
Porm, mais convenientemente, eles podem ser criados e editados atravs do
editor contido no prprio MatLab, que pode ser aberto atravs do menu, opo file
Pgina 3

EL9720 Processamento Digital de Sinais

ou dos dois botes esquerda na barra de ferramentas utilizados para iniciar o


editor de texto, criar ou abrir um arquivo j existente.
Outra opo para abrir um arquivo j existente clicar duas vezes sobre seu
nome no current directory.
Um erro muito comum, por parte dos usurios do MatLab, tentar abrir um
arquivo que no aparece nesta janela. Isso ocorre quando o MatLab est apontando
para outra pasta.
A consequncia deste erro a no compilao e a no execuo do arquivo.
Para corrigir este problema, basta clicar nos trs pontinhos do lado direito da barra
de ferramenta e procurar a pasta desejada.
Para esta disciplina, conveniente que cada aluno crie uma pasta em sua rea
de trabalho (no no computador) com o nome de EL9720 e salve todos os arquivos
criados nesta disciplina nesta pasta.
Existem dois tipos de arquivos-m: programas e funes.

4. Programas
Programa uma sequncia de funes e comandos, que os executa como se
tivessem sido digitados diretamente na command window.
4.1 Definindo variveis
A definio de variveis feita de modo muito simples, atravs da atribuio
de um valor ao nome da varivel que se deseja criar, conforme apresentado no
exemplo da criao da varivel e :
a=10
b=20;
Pressionando a tecla F5, compilamos e rodamos este programa de apenas
dois comandos e obtemos as seguintes mudanas na rea de trabalho:

Note que as variveis foram criadas no workspace e a varivel a foi impressa


tambm na rea de trabalho. Isso ocorreu pela falta do ; no final do comando. Esta
opo evita que os valores das variveis sejam exibidos na tela.

Pgina 4

EL9720 Processamento Digital de Sinais

Alm disso, outras variveis podem ser criadas a partir do resultado de novas
operaes conforme apresentado no exemplo:
a=10;
b=20;
c=a+b

Note que as variveis so todas criadas no workspace, entretanto a nica que


aparece na janela de comando a varivel c devido a ausncia do ponto-e-vrgula
no final do comando.
Alm das variveis criadas e definidas pelo usurio, outras variveis prdefinidas esto disponveis pelo MatLab. Destas variveis, as mais utilizadas so o
e as letras e
Desse modo, uma varivel complexa pode ser definida especificando-se a
parte real e a parte imaginria da seguinte maneira:
d=1+2i;
e=3+3j;
importante ressaltar que estas variveis pr-definidas podem, tambm,
serem sobrescritas e usadas para outros valores, permitindo que sejam usadas
como ndice de vetores, matrizes e para comandos
, como costume,
principalmente, na linguagem C.
Por esse motivo, no MatLab, sempre importante dar preferncia para as
letras m ou n para serem utilizadas como ndices de laos e vetores.
No MatLab, todas as variveis, sejam elas escalares, vetores ou matrizes so
tratados da mesma maneira, como matrizes. O que significa que para o MatLab,
uma varivel escalar uma matriz de ordem
um vetor linha uma matriz de
ordem
e um vetor coluna uma matriz de ordem
.
Por este motivo, a definio de vetores e matrizes bastante similar
definio de variveis escalares, atravs da insero dos valores, um a um, entre
colchetes, do seguinte modo:
d= [2 4 6 8 10]
e=[2;3;5;7;11]
f= [1 2 3 4; 5 6 7 8; 9 10 11 12]

Valores separados ponto-e-vrgula definem uma mudana de linha.


Pgina 5

EL9720 Processamento Digital de Sinais

Existem, entretanto, outras maneiras de definio de vetores e matrizes.


Uma delas atravs da especificao de valores iniciais, finais e incrementos
entre os valores, apresentados nos exemplos abaixo, onde o vetor g varia de 1 a 5
com espaamento de 1 em 1 e o vetor h varia de 1 a 11 com espaamento de 2 em
2.
g=1:5;
h=1:2:11;
A outra atravs do comando
que fornece um vetor linha de
n elementos entre os valores e . O exemplo mostra os dois vetores
e
apresentados no exemplo acima, sendo criados a partir deste comando:
g=linspace (1,5,5);
h=linspace(1,11,6)
importante ressaltar que os vetores criados destas ltimas maneiras so,
obrigatoriamente, vetores linha. Deste modo, se for desejado um vetor coluna, devese usar o operador de transposio indicado por uma apstrofe aps o nome da
varivel, conforme o exemplo:
k=g
Assim como vetores podem ser criados a partir de valores escalares, as
matrizes tambm podem ser criadas a partir de vetores. Alguns exemplos so
apresentados abaixo:
L= [1:5; 2:6]
m= [linspace(1,5,6); linspace(10,12,6)];

4.2. Acessando Variveis


Uma das grandes vantagens de se trabalhar com vetores e matrizes que
este tipo de varivel pode ser acessado de maneira muito fcil.
Por exemplo, seja a um vetor e m uma matriz. Suponha que se deseje
modificar o valor da terceira posio de do vetor
para 9, e o valor da linha 2,
coluna 3 da matriz para o valor 10, ento:
a(3)=9;
m(2,3)=10;
ou ento, suponha que se deseje somar o ltimo valor do vetor a com o primeiro
valor da ltima linha da coluna
e ento armazenar o resultado em uma nova
varivel, ento
n=a(end)+m(end,1);
Pgina 6

EL9720 Processamento Digital de Sinais

Alm disso, possvel delimitar, ou selecionar, um intervalo de linhas ou


colunas, utilizando o operador dois pontos
o=m(1:2,2:3)
ou ainda, se o que se deseja selecionar todas as linhas de uma determinada
coluna, pode-se usar os dois pontos conforme o exemplo abaixo, que remove a
terceira coluna de uma matriz e atribui a esta coluna a matriz nula [].

4.3. Operaes aritmticas


As operaes aritmticas simples (adio, subtrao, diviso e multiplicao)
envolvendo nmeros escalares seguem a interpretao natural e esto listadas
abaixo:

Quando se trata de operaes entre uma varivel escalar e uma varivel


matricial (vetores ou matrizes) a operao realizada entre a varivel escalar e
cada um dos elementos, por exemplo:
[

]
]

J nas operaes entre duas variveis matriciais ou vetoriais, as operaes de


soma e subtrao sempre so realizadas elemento por elemento, enquanto as
operaes de multiplicao podem ser realizadas tanto elemento por elemento
como pela matriz.
A multiplicao de um vetor de (5X1) por um vetor (1X5) resulta numa matriz
de (5X5). J a operao de multiplicao elemento por elemento produz um terceiro
vetor de mesma dimenso cujos elementos so resultado da multiplicao entre os
dois vetores iniciais. Este ltimo tipo de operao apresenta uma sintaxe
diferenciada com um ponto antes do operador matemtico.
[

Pgina 7

EL9720 Processamento Digital de Sinais

] [
[

]
]

[
[

]
]

4.4. Grficos
Outra caracterstica muito interessante do MatLab a facilidade de se construir
qualquer tipo de grfico de uma maneira muito simples. Os dois comandos mais
utilizados so:

e
.

O comando
traa um grfico contnuo com valores interpolados
linearmente.
O comando stem traa um grfico composto por uma sequncia de raias com
crculos na extremidade superior.
Ambos os comandos colocam o vetor relacionado como primeiro argumento do
comando no eixo horizontal e o vetor do segundo argumento no eixo vertical. O
modo indica o formato das linhas, conforme a tabela seguinte.

Alm destes comandos para traar o grfico, existem outros comandos


auxiliares, onde os mais importantes esto listados na abaixo:

coloca linhas de grade no grfico


acrescenta um ttulo ao grfico
acrescenta um ttulo no eixo das abscissas
acrescenta um ttulo no eixo das ordenadas
permite que dois grficos sejam plotados na mesma figura sem que
o anterior seja apagado.

Pgina 8

EL9720 Processamento Digital de Sinais

5. Funes
As funes so arquivos-m que mediante a uma varivel de entrada executam
um conjunto de comandos e, ento, retornam, ao usurio, outra varivel. Elas
podem ser criadas e geradas pelo usurio ou podem ser originais do MatLab.
Algumas funes originais so apresentadas no quadro abaixo e a listagem
completas de funo fornecida no help do MatLab
Em todos os casos, a varivel de entrada, e caso no seja definida pelo
usurio, o MatLab apresenta a varivel
como sada.

A funo
, a funo mais til do MatLab. Sempre que surgir alguma
dvida sobre como utilizar uma determinada funo, basta digitar na command
window
que o MatLab ir apresentar uma breve explicao
sobre a funo, indicar o caminho dos documentos sobre esta funo e ainda,
apresentar funes relacionadas que podem ser, em alguns casos, mais teis do
que a funo que se desejava saber.
Alm da imensa lista de funes internas ao MatLab, em muitos casos
especficos necessrio que o usurio crie suas prprias funes. Estas funes
tambm se tratam de arquivos-m, e apresentam o seguinte formato:

onde

so os argumentos de sada e

os argumentos de entrada.

O exemplo abaixo mostra uma funo, que recebe dois valores como entrada
e retorna a soma deles como sada.

Pgina 9

EL9720 Processamento Digital de Sinais

function res=somateste(a,b)
% Funo para somar dois numeros, a e b.
res=a+b;
No caso do exemplo,
a varivel de sada, e e so as variveis de
entrada. O smbolo % representa a adio de um comentrio.
A funo deve ser salva com o mesmo nome declarado no incio da funo.
Para chamar a funo basta digitar nas linhas de comando do programa:
>>y=somateste (10,15)
y=
25

Note que durante a execuo da funo, as variveis internas funo, como


para este exemplo, no so criadas no workspace.

6. Boas prticas de programao


Para que um programa possa ser executado, ele precisa que todas as
variveis necessrias estejam em sua estrutura, no podendo ser afetado por
variveis criadas previamente ou por grficos de outros programas.
Alm disso, conveniente que a command window esteja limpa para facilitar a
observao dos resultados e mensagens de erro.
Deste modo, ao se criar um novo programa, deve-se utilizar o comando
para limpar a command window, o comando
para apagar todas as
variveis pr-existentes e o comando
para encerrar todas as janelas de
grficos que estiverem abertas. Um exemplo apresentado abaixo:
clc
clear all
estes comandos no devem ser utilizados em funes
closeImportante:
all
Alm disso, muito importante que comentrios sejam sempre utilizados, uma
vez que eles podem explicar o que est sendo feito durante a execuo do
problema e facilitar na interpretao dos resultados.
Qualquer linha de um arquivo-m que comece com o smbolo % tratado como
um comentrio e por isso no executado.
Em uma funo, um comentrio com um resumo desta funo deve ser
inserido logo abaixo da linha de definio, este comentrio aparecer sempre que o
usurio utilizar o comando help.
function soma=Aulo02_02(a,b)
% Funo para somar dois nmeros, a e b
soma=a+b;

Pgina 10

EL9720 Processamento Digital de Sinais

6. Atividades
IMPORTANTE:
recomendado que cada aluno crie em seu ambiente de rede uma pasta que
ser utilizada apenas para os arquivos de MatLab desta disciplina.
Recomenda-se tambm, que todos os exerccios sejam salvos e mantidos
nesta pasta durante o semestre.
I.

Usando o editor de texto do MatLab, crie um script chamado


que execute as seguintes funes:
a) Limpe a janela de comandos
b) Limpe todas as variveis pr-existentes
c) Feche todos os grficos e figuras
d) Gere um vetor com os nmeros inteiros de 0 a 50
e) Gere um vetor com valores de 0 a 1 com passo de 0,1
f) Mostre o segundo elemento do vetor
g) Gere um vetor de nmeros pares de -50 a 50
h) Gere um vetor de 1000 pontos que v de 0 a 1
i) Gere um vetor de 237 pontos que v de 1 a 0
j) Gere um vetor de 5000 pontos com valores entre 0 e 2
k) Gere a seguinte matriz

II.

Digite na janela de comandos help zeros e help ones e com o auxlio da


informao fornecida crie um programa chamado
que:
a) Gere um vetor de 10 nmeros zeros em linha
b) Gere um vetor de 10 nmeros 2 em coluna

III.

Sendo
a)
b)
c)
d)
e)
f)
g)

e
, crie um
que execute as seguintes funes:
Crie os vetores
Some (
)
Subtraia (
)
Multiplique de e (elemento por elemento)
Divida a por (elemento por elemento)
Eleve ao quadrado
Eleve a (elemento por elemento)

programa

chamado

IV.

Crie uma funo que receba a varivel


, com o comando
a)
b)

e fornea o grfico da funo


Teste com:

V.

Escreva um programa, chamado


, que fornea um vetor
contendo 100 valores aleatrios uniformemente distribudos no intervalo de 0
a 1 e que faa o grfico deste sinal. (Dica: use a funo
).

Pgina 11

EL9720 Processamento Digital de Sinais

Exerccios de fixao
I.

Sendo
e
, onde um vetor de 1000 valores que vai de 1 a 0,5 e um vetor que, tambm, vai de -1 a 0,5, porm com passo de 0,25,
escreva uma sequencia de comandos, chamada
, que

a) Plote, numa mesma figura,


em linha vermelha e contnua, e
em raias
azuis
b) Insira ttulo, linhas de grade, nomes nos eixos x e y e legenda. Tem dvidas de
como fazer isso? Utilize o comando help na command window.

II. Escreva uma sequencia de comandos, chamada


, que gere
um grfico do sinal
( )
onde
um vetor de nmeros
aleatrios com distribuio uniforme com valores de -1 a 1. Faa 0n99. (Dica:
use o comando
)

III. Escreva uma funo MatLab chamada


cujas entradas sejam
dois nmeros inteiros a e b com a < b.
A funo dever fazer o grfico de impulsos com amplitude 2 no intervalo a n
b. O grfico deve comear em a-2 e terminar em b+2. Por exemplo, ao digitar na
command window:
>> Aula01_fix03(2,8)

Devemos obter a figura:

Obtenha as figuras para os comandos:


a) Aula01_fix03 (1,9)
b) Aula01_fix03 (-5,15)

Pgina 12

You might also like