SS - introMATLAB Doc Completo 2021
SS - introMATLAB Doc Completo 2021
SS - introMATLAB Doc Completo 2021
Introdução ao MATLAB
‐ Aulas de INTRODUÇÃO ao MATLAB
‐ Enunciado do Trabalho Prático de Introdução ao MATLAB – TRAB 0
ISEL, 2020
Índice
Bibliografia
Stormy Attaway, MATLAB - A Practical Introduction to Programming and Problem Solving, 2nd Edition, Elsevier, 2012.
ii
Sinais e Sistemas
x=
1 2 3 4
x=
1 2 3 4
Y=
1 2 3 4
5 6 7 8
9 10 11 12
Y= ans =
1 2 3 4 3 4
5 6 7 8
9 10 11 12
>> length(X)
ans =
n= t=
n= ans =
1 2 3 4 1 4
>> m=n' >> size(m)
m= ans =
1 4 1
2
3
4
ans = ans =
0.5000 3
ans = ans =
1 3 2
3
A=
1 2 3
4 5 6
ans = ans =
1 5
A= A= V=
1 2 3 1 2 3 7 8 9
3 2 1 3 2 1
4 5 6
>> A=[A;V]
>> A(2,:)=[ ]
A=
A=
1 2 3
1 2 3 4 5 6
4 5 6 7 8 9
ans = ans =
0 0 1 1 1
0 0 1 1 1
0 0 1 1 1
X= ans = ans =
1 2 3 4 30 1 2 3 4
2 4 6 8
3 6 9 12
Operações elemento a elemento 4 8 12 16
z= ans = ans =
1 2 3 4 1 4 9 16 1 4 9 16
A função tem que ser definida num ficheiro cujo nome é igual ao nome da
função
Exemplos
Função limite
limit(x,t,+inf)
limit(x,t,-inf)
z10=subs(z1,t,0)
T0=1;
v=subs(v)
tg=-pi:0.1:pi;
vg=subs(x,t,tg);
length(vg)
syms t w f s T0
u=heaviside(t)
y=cos(10*t)
v=sin(2*pi/T0*t)
x=10*exp(-t)
z=x*y % modulação de amplitude: portadora (y)
z1=x*u
z2=compose(y,v) % composição
z3=cos(10*t+v) % modulação de frequência
% Substituição do valor de T0
T0=2;
v=subs(v); pretty(v)
z2=subs(z2); pretty(z2)
z3=subs(z3); pretty(z3)
% Gráficos
figure(20)
subplot(4,2,1), plot(tg,ug,'r-','LineWidth',1.5), grid on, title('Escalão unitário')
subplot(4,2,2), plot(tg,yg,'b-','LineWidth',1.5), grid on, title('y(t)=cos(10t)')
subplot(4,2,3), plot(tg,vg,'g-','LineWidth',1.5), grid on, title('v(t)=sin(2*pi*0,5t)')
subplot(4,2,4), plot(tg,xg,'c-','LineWidth',1.5), grid on, title('x(t)=10e^-^t')
subplot(4,2,5), plot(tg,xg,'k-.',tg,zg,'r-','LineWidth',1.5)
grid on, title('z(t)=10e^-^tcos(10t)')
subplot(4,2,6), plot(tg,z1g,'k-','LineWidth',1.5), grid on, title('z1(t)=10e^-^tu(t)')
subplot(4,2,7), plot(tg,z2g,'r-','LineWidth',1.5), grid on, title('z2(t)=yov')
subplot(4,2,8), plot(tg,z3g,'b-','LineWidth',1.5), grid on,
title('z3(t)=cos(10t+sin(2*pi*0,5t)')Helena Sousa Ramos, André Lourenço 32
Exemplo: representação gráfica de funções (3)
Escalão unitário y(t)=cos(10t)
1 1
0.5 0
0 -1
-2 -1 0 1 2 -2 -1 0 1 2
-t
v(t)=sin(2*pi*0,5t) x(t)=10e
1 50
-1 0
-2 -1 0 1 2 -2 -1 0 1 2
-t -t
z(t)=10e cos(10t) z1(t)=10e u(t)
50 10
0 5
-50 0
-2 -1 0 1 2 -2 -1 0 1 2
z2(t)=yov z3(t)=cos(10t+sin(2*pi*0,5t)
1 1
0 0
-1 -1
-2 -1 0 1 2 -2 -1 0 1 2
.
Sinais e Sistemas
Licenciatura em Engenharia de Electrónica e Telecomunicações e de Computadores
-1-
Sinais e Sistemas TRAB 0 LEETC/ISEL
Aula Prévia - IMPORTANTE: As QUESTÕES respeitantes a esta aula devem ser resolvidas
em casa, de preferência antes da 1ª aula de LABORATÓRIO
Crie um script MATLAB (ficheiro .m) onde deve incluir todas as instruções realizadas neste trabalho. Deve comentar o seu trabalho
por forma a poder usá-lo como documentação de apoio à sua programação em linguagem MATLAB.
Através do comando help do Matlab e com as próximas sugestões, tente compreender o que fazem alguns dos operadores descritos na tabela anterior.
-2-
Sinais e Sistemas TRAB 0 LEETC/ISEL
1. Declaração, Afectação e Indexação de Matrizes
2. Funções MATLAB
Determine o que faz cada uma das seguintes funções:
find(a>c) Com base nos conceitos de álgebra linear, elabore instruções
MATLAB que resolvam o seguinte sistema de equações:
max(a)
max(max(a)) x y z 4
min(a) x 2y z 3
x z 1
sum(a)
inv(a)
-3-
Sinais e Sistemas TRAB 0 LEETC/ISEL
1. Declaração de Vectores
Faça as seguintes declarações de vectores e verifique o que fazem.
V=-2:3:20 Defina um vector t com elementos de 0 até aproximadamente 0.1 e
com 200 pontos.
V=-2:-3:20
Verique o que fazem as funções
V=2:-3:-20
size(t)
V=2:3:-20
length(t)
Verique o que faz a instrução
Construa os seguintes vectores:
tlin=linspace(0,0.1,200)
t0=-31:32;
comparando os vectores t e tlin. Compare em particular o
x1=4*t0; x2=-4*t0;
incremento em cada um dos vectores e a dimensão dos vectores.
tx=-(6*32-1):6*32;
x=[x1 x2 x1 x2 x1 x2];
Usando a função plot() represente graficamente o sinal x=f(tx).
-4-
Sinais e Sistemas TRAB 0 LEETC/ISEL
2. Representação gráfica de vectores
Considere o vector t que acabou de definir na secção anterior. Verifique o que faz a instrução figure. Execute help figure
Construa um vector y=f(t), em que f(t) é uma exponencial real para mais detalhes.
decrescente, ou seja, y=exp(-t/k), arbitrando previamente um Construa outro vector, uma sinusoide de amplitude 10, frequência
valor para k. Denomine k1 o valor de k arbitrado e y1 o 50Hz e fase π/8: x=10*sin(2*pi*50*t+pi/8);
correspondente vector y.
Ajuste a frequência da sinusoide por forma a que consiga ver 3
Agora determine um novo valor de k de modo a que o último valor ciclos completos no intervalo de tempo definido para t (vector
do vector y seja 0.3. Denomine k2 o novo valor de k e y2 o temporal definido na questão anterior). Use a instrução plot para
correspondente vector y. realizar a visualização gráfica da sinusoide.
Faça a representação gráfica de yi=fi(t), para i=1,2. Use o comando Verifique graficamente o resultado quando a frequência da
help plot, para poder ver a versatilidade da função plot(). sinusoide toma os valores 1000Hz e 0.1Hz. Explique o que observa.
Nomeadamente, use as instruções:
Determine w, produto de x por y. Lembre-se que se multiplicam
figure, plot(t,yi,’g’); vectores elemento a elemento com a notação “.*”.
figure, plot(t,yi,’.’); Faça o plot de x, y e w. Use o comando subplot para representar
figure, stem(t,yi); na mesma janela gráfica os vectores x, y e w.
Compare os resultados que obtém. Use os comandos hold on; ... hold off; para representar
no mesmo gráfico os vectores x, y e w.
-5-
Sinais e Sistemas TRAB 0 LEETC/ISEL
3. Funções de Controlo de Fluxo
Conhece de outras linguagens de programação as intruções: if-then-else; for; switch; e outras que fazem o controlo de fluxo nos programas.
Em MATLAB estas funções também estão definidas.
Execute as seguintes instruções: otherwise
a = 2.5; disp(Siga as instruções!!')
if (a > 2) end
b = a + 2; Execute o seguinte código (ciclos):
else a = [ 4 2 –3 5 –1 2 3 2 –6 1];
b = a – 2; d = length(a);
end for i = 1: d
Verifique o valor de b após esta operação. Execute o comando if a(i) > 0
help if para verificar as outras opções deste comando.
b(i) = 1;
else
b(i) = -1;
Execute a seguinte operação e observe o resultado obtido. end
choice = input('Introduza: 1, 3, ou 5 > '); end
switch choice
case 1
Verifique como ficou o vector b depois desta instrução.
disp('É um 1 (um)!!') Verifique se existe outra forma de afectar o vector b com os
case 3 mesmos valores!
disp('É um 3 (três)!!')
case 5
disp('É um 5 (cinco)!!')
-6-
Sinais e Sistemas TRAB 0 LEETC/ISEL
4. Functions
O MATLAB permite que o utilizador crie as suas próprias funções em ficheiros com extensão .m , para que se possam invocar tal como as funções
próprias do MATLAB. Tenha em atenção que o nome do ficheiro .m tem que ser o mesmo do nome da função.
A sintaxe genérica de criação de funções é: Recorra à instrução help function para mais detalhes sobre
estas funções.
function [x,y]=<nome>(a,b,c)
Os parâmetros de entrada da função são os valores de A, B , α, β e
% Linhas de help que são vistas pelo utilizador
da variável de selecção.
% quando faz help desta função
São devolvidos três vectores: os vectores constituídos pelo módulo
linhas de código
e pelo argumento de x t ou os vectores constituídos pela parte
% comentários internos da função
real e pela parte imaginária de x t e, em qualquer dos casos
linhas de código anteriores, o vector constituído pelos valores do tempo a usar para
a,b e c são os parâmetros de entrada da função e os parâmetros de representar graficamente os vectores módulo e argumento ou
saída são o x e o y. Todas as variáveis declaradas dentro da função parte real e parte imaginária de x t .
são internas, pelo que não são vistas fora do scope desta.
O script que chama a função criada deve representar, na mesma
Exemplifique o uso de funções resolvendo o exemplo seguinte. janela gráfica, o módulo e o argumento ou a parte real e a parte
imaginária de x t . Deve ainda ler previamente, da janela de
Realize uma função que faça a geração de uma função exponencial comandos, o valor da variável de selecção. Para tal, use a função
C e st , t 0 input(). Faça help input para maior detalhe do funcionamento
complexa. x t , com C A jB, A, B R e desta função.
0, t 0
s j , , R e que calcule, de acordo com o valor de uma Associe a este script as condições necessárias para que não haja
erros por parte do utilizador da função.
variável de selecção, os vectores constituídos pelo módulo e pelo
argumento de x t ou os vectores constituídos pela parte real e Tenha em atenção que a geração do vector dos tempos deve
garantir, automaticamente, horizontes temporais que permitam
pela parte imaginária de x t . Use, para cálculo dos resultados uma visualização gráfica adequada.
pedidos, as funções MATLAB: abs(), angle(), real() e imag().
-7-
Sinais e Sistemas TRAB 0 LEETC/ISEL
5. Definição de sinais simbólicos, conversão em vectores numéricos e representação gráfica dos sinais
Usando a instrução syms, defina simbolicamente os sinais básicos contínuos seguintes: Escalão Unitário; Pulso Rectangular; Pulso Triangular; Sinusóide
(nota: sinais definidos a cor vermelha). Use as expressões seguintes, definindo os parâmetros dos sinais igualmente como simbólicos.
Em casa deve resolver esta questão para os restantes sinais definidos na tabela.
A, t 0 t td A , t d 2 t t d 2
x1 t A u t x2 t A
0, t 0 0 ,caso contrário
t td
A 1 , td t td
A, t 0
t t 0 t td
x3 t A A 1 , t t t x t A sign t 0, t 0
d d 4
A, t 0
0 ,caso contrário
sen t
x5 t A sinc t A x6 t A sen 2f0 t
t
Atribua valores convenientes aos parâmetros dos sinais e faça a substituição desses valores nas funções simbólicas que tinha obtido. Use a instrução
MATLAB subs().
Defina convenientemente vectores temporais t, numéricos e com pelo menos 500 pontos, e represente graficamente, na mesma janela gráfica, todos
os sinais.
-8-
Sinais e Sistemas TRAB 0 LEETC/ISEL
6. Cálculo da potência média e da energia de sinais
Para os sinais x2 t , x3 t e x6 t definidos na questão 5, determine a sua potência média e a sua energia. Elabore instruções que classifiquem
automaticamente os sinais como SINAIS de POTÊNCIA ou como SINAIS de ENERGIA.
t t
y1 t 10 3
y2 t sign t y1 t y3 t 3
2 10 10
Usando as instruções MATLAB diff() e int() determine respectivamente a derivada e a primitiva de cada um dos sinais.
Represente, na mesma janela gráfica, os sinais originais, as suas derivadas e as suas primitivas.
Tenha em atenção a necessidade de representação de funções Dirac no caso das derivadas de alguns dos sinais. Use a instrução stem() nessa
representação.
8. Funções
Construa funções MATLAB que retornem alguns dos sinais (simbólicos) indicados na questão 5, bem como o valor da sua ENERGIA ou da sua POTÊNCIA.
Deve ser retornado um indicador que classifique o sinal como sinal de energia ou sinal de potência, o qual permitirá identificar qual o
significado do valor retornado: (E ou P);
As funções MATLAB devem aceitar como parâmetros os valores de t0, τ, T0, etc, característicos de cada função;
As funções MATLAB devem representar graficamente os sinais em estudo num intervalo de tempo DELTAt.
As funções MATLAB devem ser chamadas por um script que apresenta ao utilizador um Menu de opções e que lê: a opção escolhida, os parâmetros
característicos necessários, bem como o intervalo de tempo DELTAt para a representação gráfica.
Para leitura e escrita de valores da ou na janela de comandos, veja como funcionam as instruções MATLAB input() e fprintf().
-9-