Académique Documents
Professionnel Documents
Culture Documents
Introdução
O MatLab é muito fácil de usar, sobretudo se tiver alguns conhecimentos de Fortran ou C.
Seguidamente, propomos uma série de exercícios que deve fazer cuidadosamente e com atenção, de
forma a familiarizar-se com os procedimentos do MatLab. FAÇA HELP SEMPRE QUE
NECESSITAR. Para interromper use Control-C. Pode usar as setas do teclado para repetir,
eventualmente com alterações, instruções dadas anteriormente. Deve usar o comando clear sempre que
tenha problemas de memória. Antes de começar, coloque uma disquete na unidade a: do seu
computador e faça cd a: na sua área de trabalho. Sempre que encontre um nome de uma função que
não conheça, faça help nome da função.
No final deste manual, encontrará uma listagem das funções que foi encontrando ao longo das sessões.
Complete a parte direita com o significado e/ou acção de cada uma.
1. OPERAÇÕES USUAIS
» x=3+5
» 4-10
» 4-10;
» x=3+5;
» x=5*9-3
» x=3/4+6-10
» x=log(8)
» x=exp(log(8))
» x=log(exp(8))
» x=cos(pi/4)
» x=log(sqrt(4))
» x=sqrt(8)
» x=8^(1/2)
» x=5^2
» sin(pi)
» eps
» realmin
» realmax
» realmax*1.1
» realmax+10
» eps
» format long
Exercício 2
2
Considere o polinómio p1=x + 3x +2
a) Use a função roots para determinar as suas raízes.
b) A partir das raízes, reconstrua o polinómio usando a função poly.
c) Represente graficamente as raízes usando a função polar.
% A instrução seguinte abre o arquivo notas.dry e grava todas as instruções digitadas na sequência
» diary notas.dry
» x = [1 -2 3]
» y = [4 3 2]
» z = x.*y
» z = x.^y
» y.^2
» diary off % Encerra a gravação da instrução diary em notas.dry
» dir
» type notas.dry
» clear
» help diary
» help save
» help load
» a = [1 2 3 4 5 6 7 8];
» b = a*2;
» c = a - 1;
» save a b c
» dir
» clear
» whos
» load a b c
» whos
% RECURSOS GRÁFICOS 1
» y = [0 2 5 4 1 0];
» plot(y)
» t = 0:.4:4*pi
» y = sin(t)
» z = cos(t);
» plot(t, y, ‘.’, t, z "-.")
» title(‘Funções’)
» xlabel("t")
» ylabel("Seno e Co-seno")
» text(3, 0.5, ‘Seno’)
% Após o próximo comando, selecione a posição que deseja colocar o texto ‘Co-seno’ com rato
» gtext(‘Co-seno’)
Exercício 3
% AJUSTE DE CURVAS DE DADOS EXPERIMENTAIS
a) Faça a geração de 20 valores entre –1 e 1, usando a função linspace.
b) Com aqueles valores, construa os valores da função x=t2.
c) Suponha que os valores da função são observados com erro uniforme entre –0.1 e 0.1, xr=x+r.
d) Desenhe o sinal xr.
e) Use a função polyfit para ajustar um polinómio aos dados. Calcule os valores do polinómio nos
pontos considerados, usando a função polyval.
f) Com a função ginput, obtenha as coordenadas de 3 pontos seleccionados no gráfico com o rato
3. OPERAÇÕES COM MATRIZES
» v=1:4;
» A = [1 2 3; 3 -5 6; 6 7 9]
» eye(3)
» zero(3)
» zero(3,3)
» zeros(3,3)
» B = A'
» A*B
» A*B
» A.*B
» A+B
» A(2,3)
»A
» A(1,:)
» A([1,2],:)
» A([3 2],[2 1])
»A
» A*v
»A
»v
» size(A)
» length(A)
» sin(A)
» sqrtm(A)
» M=sqrtm(A)
» M*M
» real(M*M)
»A
» A^2
» A.*A
» A.^2
» inv(A)
» det(A)
» rank(A)
» eig(A)
» [V,D]=eig(A)
» eig(A)
» a = eye(4,5)
» r = rand(size(a))
» b = [2 0 0;0 3 0;0 0 -1];
» d = det(b)
» bi=inv(b)
» l = eig(b)
» c=[b b]
» d=[b;b]
» ci=pinv(c)
» di=pinv(d)
» c*ci
» ci*c
» di*d
» d*di
Exercício 4
a) Faça a geração de L=100 pontos de uma sinusoide de frequência f=3/8, sinal x.
b) Calcule a Transformada de Fourier Discreta, X, usando a fft com uma dimensão igual a 1024.
c) Trace o gráfico do módulo de X no 1º terço da área gráfica. Normalize o eixo de frequências
entre 0 e 1. Identifique a localização do pico.
d) Seja y um sinal que se obtem de x juntando-lhe ruido branco gaussiano de forma a que a
relação sinal ruído seja de 20 dB.
e) Repita as alíneas b) e c). Trace o gráfico do módulo de Y no 2º terço da área gráfica.
f) Calcule a função de autocorrelação de y definida pela expressão seguinte e implementada com
1 L-|k|
L-|k| ∑
a ajuda da função xcorr. Rx(k) = x(n).x(n+|k|) para |k| < L
0
g) Com a função de autocorrelação calculada, implemente a matriz de correlação C gerada de
forma a que Ci,j=Ry(|i-j|), para i,j=0, ..., 8;
h) Faça a decomposição em valores e vectores próprios (auto-decomposição) e crie uma matriz V
com os vectores próprios correspondentes aos menores valores próprios.
i) Seja v o vector correspondente à primeira linha de V. Calcule w=V.vH e a sua Transformada
de Fourier W. Repita c) e trace o gráfico do módulo de W no 3º terço da área gráfica. Extraia
algumas conclusões.
4. PROGRAMANDO COM O MATLAB
% Digite os seguintes comandos e grave o arquivo com o nome teste1.m no seu directório de trabalho.
n=3;
m = 3;
for i = 1: m
for j= 1 : n
a(i, j) = i + j;
end;
end
disp(‘Matriz A’)
disp(a)
function [s]=ler(nome)
fid1=fopen(nome,'r');
[s]=fread(fid1,'int16');
plot(s)
Em exemplos anteriores já usámos ciclos, embora sem prestar muita atenção às suas concepção
e implementação. Alguns exemplos mostram com eles funcionam.
Geração de uma soma de sinusóides
% frequências, amplitudes e fases das sinusoides
f=[0.1 0.15 0.4];
a=[0.9 0.95 0.99];
ph=pi*rand(size(1:3));
function xx=ger_sin(f,a,ph,np)
for i=1:ns
for k=1:np
x(i,k)=(a(i)^t(k))*cos(2*pi*f(i)*t(k)+ph(i));
end
end
figure(1)
plot(xx)
Exercício 5
Considere um sinal x(t) qualquer. Pretende-se efectuar o cálculo numérico do seu integral num dado
intervalo [a, b], a partir N+1 das suas amostras uniformemente espaçadas, x(nT); T é o intervalo de
amostragem definido por: T=(b-a)/N. Use a seguinte notação: t0 =a, t1=t0+T, t2=t0 +2T ..., tN=b. O
cálculo do integral baseia-se na equivalência entre o integral e a área.
Partindo de s0(t) = X0, vamos calculando a função sn(t) por adição de uma harmónica:
2π
sn(t) = sn-1(t) + 2.An.cos( nt + ϕn)
T
Quando a potência do erro p(t) - sn(t) for suficientemente pequeno, paramos o algoritmo, visto os
termos da série serem insignificantes.
a) Use subrotina de integração trapezoidal, atrás desenvolvida, para calcular os coeficientes de Fourier
do sinal periódico:
2π
jϕn 1 T/2 -j nt
x(t).e T dt
T⌠
⌡
Xn= Ane = n=0, 1, ..., 20;
-T/2
b) Para fazer a reconstrução, pretende-se uma implementação usando while, tendo como variável de
teste a potência do erro. Com pause deverá parar-se o algoritmo para visualizar na mesma figura: a)
sinal original, b) sinal sintetizado, c) hamónica actual.
CRIIntrodução ao MatLab
Duração 1h 30m
Exercício 2 - Numa sala estão 8 pessoas, reunidas em torno de uma mesa circular. Cada uma escolhe
um número aleatoriamente e soma-o aos números das pessoas ao lado, à sua esquerda e direita. Você
recolhe as 8 somas. Como é que você descobre o número que cada pessoa escolheu ?
Exercício 3 – shift-register