Escolar Documentos
Profissional Documentos
Cultura Documentos
Como alternativa ao Matlab existem os softwares livres: GNU Octave, Scilab, Sage, FreeMat,
etc. Algumas alternativas, como é o caso do Octave, são muito semelhantes ao Matlab e
grande parte do código escrito para Matlab corre diretamente em Octave.
Assim para evitar problemas com as licenças, especialmente durante a prova final, os
estudantes são aconselhados a usar o Octave em detrimento do Matlab em APS.
O Octave pode ser instalado nas máquinas pessoais dos estudantes (Linux ou Windows)
através dos link: https://www.gnu.org/software/octave/ .
As packages do Octave são o equivalente das toolboxes no Matlab. Em APS são necessárias as
seguintes packages do Octave: signal, symbolic e control. Podem ser obtidas a partir do link:
https://octave.sourceforge.io/packages.php .
Salvo indicação em contrário, neste documento a partir deste ponto quando o Matlab é
referido está implícito que estão a ser referidos os dois softwares: Matlab e Octave.
Este guião não pretende ser um manual nem um tutorial para o Matlab. Já existem inúmeras
publicações em livros convencionais, em livros eletrónicos e na web.
Assim, com este guião pretende-se apenas orientar o estudante num primeiro contacto com o
Matlab, e indicar algumas das funções mais úteis à unidade curricular.
O Matlab está disponível na feup nas máquinas do Lab. I 103, na máquina ‘apps.fe.up.pt’ (via
Remote Desktop) e em diversas salas de informática.
Se possuir acesso à feup via VPN também pode usar a máquina ‘apps.fe.up.pt’ a partir de
qualquer máquina com acesso à internet.
Passo 1:
Crie uma diretoria (folder) de trabalho designada neste texto como %caminho%. Ex:
c:\grupos\G01\trabalho
Carregue o Matlab
>> cd %caminho%
>> pwd
Pode usar qualquer editor de texto, mas o editor do Matlab: File->Open->s1.m, tem
vantagens ao adaptar-se à sintaxe do Matlab.
Em alternativa pode fazer duplo click em s1.m que se o Matlab estiver corretamente
instalado, abre o ficheiro s1.m no editor.
>> s1
Analise cuidadosamente o ficheiro, verificando o que cada instrução faz, recorrendo ao help do
Matlab sempre que for preciso. Com isto deve ficar com as noções básicas e mínimas que lhe
permitem trabalhar com o Matlab.
Crie uma função (CustomRms.m) que receba como argumento um vetor e retorne o valor
eficaz do sinal associado a esse vetor:
𝑁−1
1
𝑋𝑟𝑚𝑠 = √ ∑ 𝑥[𝑘]2
𝑁
𝐾=0
Justifique analiticamente os resultados obtidos para os valores Xrmsk k={1..5}. Notas: soma de
sinais de frequências múltiplas inteiras entre si; soma de sinais com componente DC; soma de
sinais de igual frequência e esfasamento diferente.
Leia a documentação do Matlab acerca da função rms. Compare os resultados da função que
escreveu com a função do Matlab.
Passo 3:
x[n] [n]
a) nota: [n] (impulso unitário) x[n] = [1]
h[n] [3, 2, 1]
x[n] [2, 2]
c)
h[n] [3, 2, 1]
Para h[n] limite o comprimento Nh do vetor a vários valores (ex: 40, 50, 100) e compare os
resultados.
Crie uma função (CustomConv.m) que retorne a convolução entre dois sinais x[n] e h[n] de
acordo com a seguinte equação:
y[n] x[k ] h[n k ]
k
Confirme (parcialmente) a função com os mesmos pares de entrada que usou no passo 3.
Passo 5:
A operação de correlação:
rxy [k ] x[n] y[n k ]
n
y[n] x[k ] h[n k ]
k
Crie os sinais: x[n] u[n 20] u[n 30] e y[n] u[n 120] u[n 130] com 200
amostras e calcule a correlação entre eles. Conclusões ?
Crie os sinais x[n] e y[n] com sinusoidais de igual frequência mas desfasadas e calcule a
correlação entre eles. Conclusões ?
Passo 6:
Use a função filter para determinar a resposta impulsional () do sistema definido pela Equação
às Diferenças com os valores:
Compare os resultados
Crie uma função (CustomFilter.m) que determine a resposta de um sistema recorrendo a sua
Equação às Diferenças, conforme indicado na equação seguinte:
Na N
b
y[n] y[n k ] k x[n k ]
ak b
a
k 1 0
a
k 0 0
admitindo que o sistema parte do repouso e que a[n] e b[n] são vetores de dimensão Na e Nb
respetivamente.
x[n] [n]
,
y[ n ] a y[ n 1] x[ n ]
Passo 8:
4
h[n] 15 [n k ]
k 0
Passo 9:
Na N
b
y[n] y[n k ] k x[n k ]
ak b
a
k 1 0
a
k 0 0
A função CustomFreqzImp.m deve receber como entrada o vetor h e um número inteiro Np.
X e j x[n] e j n
n
A função freqz foi concebida para determinar a resposta em frequência de sistemas LIT. Como
usar a função para obter a transformada de fourier de um sinal arbitrário (desde que tenha
dimensão finita como é óbvio) ?
Passo 10:
Np=20;
n=0:1:Np-1;
s1=[sin(2*pi/Np*n)];
Então mas o que se passa ? O sinal s1 tem apenas uma componente espectral: um seno.
Porque é que h1 não tem apenas uma barra, indicando apenas uma frequência ?
Para o ajudar a interpretar este facto, obtenha a transformada de fourier h2 do sinal s2:
Passo 11:
A transformada discreta de fourier (DFT), assume que o sinal em análise representa uma janela
temporal de um sinal que se repete indefinidamente.
X[n]
Isto é obviamente uma abordagem muito grosseira e simplista da DFT, mas serve para a sua
demonstração na análise espectral de sinais. Nas aulas teóricas este assunto será abordado de
forma mais formal e rigorosa.
j2 n k
N 1
X [k ] x[n] e N , k 0,1, 2,..., N 1
n 0
discreto em k.
Leia a documentação do matlab acerca da função FFT. Aplique a função FFT aos sinais s1 e s2 e
compare os resultados com os obtidos no passo 10.
Passo 12:
Crie uma função (CustomDFT.m) que determine a transformada discreta de fourier (DFT) de
um sinal. Deve receber como entrada o sinal x[n] de dimensão arbitrária N, e fornecer na saída
X[k] de dimensão N. Siga a definição da DFT não se preocupando com otimizações
computacionais.
Passo 13:
Passo 14:
Np=64;
n=0:1:Np-1;
s1=ones(1,Np);
s2=sqrt(2)*sin( 2*pi/Np*n);
s3=sqrt(2)*sin( 3*2*pi/Np*n);
s4=sqrt(2)*sin( 9*2*pi/Np*n);
s5=sqrt(2)*sin(20*2*pi/Np*n);
s6=s1+s2+s3+s4+s5;
s7=sqrt(2)*sin(2*2*pi/Np*n+90*pi/180);
s8=sqrt(2)*sin(2.5*2*pi/Np*n);
s9=[ones(1,Np/2), zeros(1,Np/2)];
s10=sqrt(2)*sin(32*2*pi/Np*n);
s11=sqrt(2)*sin(40*2*pi/Np*n);
s12=sqrt(2)*sin(63*2*pi/Np*n);
Nota1: represente os resultados num gráfico com três eixos: um para o sinal, outro para o
valor absoluto da fft e outro para a fase da fft.
Localize e verifique as componentes espectrais dos vários sinais. O que se passa com a
amplitude ? Supostamente s1 tem um valor eficaz igual à unidade.
Mas o que é que se passa com os sinais s10, s11 e s12 ? Faça uma pesquisa sobre o tema
aliasing.