introdução ao matlab aula 4 multimédia engenharia biomédica
TRANSCRIPT
Introdução ao MatLabAula 4
Multimédia
Engenharia Biomédica
Ficheiros M
• O MATLAB necessita que o ficheiro M seja armazenado ou na directoria de trabalho ou numa directoria que é especificado na sua directoria de trabalho.
• Por exemplo considere a utilização do MatLab num PC com um ficheiro M definido pelo utilizador armazenado numa directoria chamada "\MATLAB\MFILES";.
• Então, para aceder a esse ficheiro M tanto se pode mudar a directoria de trabalho com cd\matlab\mfiles da janela de comandos MATLAB ou adicionando esse directório ao percurso (path) do MATLAB.
• Adição permanente ao percurso é conseguido editando o ficheiro \MATLAB\matlabrc.m.
• Uma modificação temporária do percurso é feita teclando path(path,'\matlab\mfiles') a partir do MATLAB.
Ficheiros M
• Os ficheiros que vêm com o MATLAB estão já em directorias adequadas e podem ser usadas a partir de qualquer directoria de trabalho.
Funções em Ficheiros M
• Como exemplo duma M-File que define uma função, crie na sua directoria de trabalho um ficheiro chamado yplusx.m que contenha os seguintes comandos: – function z = yplusx(y,x) – z = y + x;
• Os seguintes comandos teclados no MATLAB demonstram este ficheiro M é usado– x = 2; – y = 3; – z = yplusx(y,x)
Controlo de FluxoInstruções ciclos e condicionais
– As instruções para ciclos e if existem mas devem se evitadas por serem computacionalmente ineficientes.
– Um exemplo de uso da instrução for é
for k=1:10, x(k) = cos(k); end
Cria um vector de inteiros de inteiros positivos de 1 a 10. • Esta operação pode ser criada com o comando
k = 1:10; x = cos(k);
• Cria a função dum vector em vez do ciclo for
Instruções condicionais
– Uma instrução if pode ser usada para definir instruções condicionais
– Um exemplo é if(a <= 2),
b = 1; elseif(a >=4) b = 2; else b = 3; end
As comparações permitidas são >=, <=, <, >, ==, e ~=.
Ciclos While (controlo de fluxo)• O ciclo While executa um conjunto de comandos um número determinado de vezes• A forma geral do ciclo while é
while expression commands…end
Os comandos entre o while e o end são executados enquanto a expressão for verdadeira Exemplo
>>num=0; EPS=1; >>while (1+EPS)>1
EPS=EPS/2; num=num+1; end >>num num = 53. >>EPS=2*EPS EPS= 2.2204e-16
Variáveis definidas pelo utilizador
• Suponha por exemplo que deseja correr um ficheiro M com valores diferentes da variável T.
• A linha de comando seguinte no ficheiro M define o valor
T = input('Introduza o valor de T: ')
• Sempre que o comentário entre plicas for mostrado no ecrã, o utilizador deve teclar o valor apropriado
• Use o help com os seguintes itens diary, save, load, who e whos.
Simulink
• Capacidade gráfica para diagramas de blocos– Pode introduzir e remover componentes
(chamados blocos)
• Biblioteca extensiva de blocos– Uma é o conjunto de blocos para DSP
Simullink
• Um ambiente para construção e simulação de modelos.– Sistemas contínuos, discretos e híbridos– Componentes lineares e não lineares– Pode simular eventos assíncronos
• Integrada de forma harmoniosa com o MATLAB e as caixas de ferramentas
Modelo Simulink• Um modelo simulink típico contém fontes,
sistemas e sumidouros
Fontes Sistemas Sumidouros
1. Ondas sinusoidais
2. Geradores de funções
3. From MATLAB workspace
4. Ficheiros em disco
1. Interligação de Blocos lineares e não lineares
1. Displays scopes2. FFT scopes3. Para o MATLAB
workspace4. Para ficheiros
em disco
Um modelo Simulink simples
z
1Unit Delay
SumSine Wave
Scope1
Scope
0.9Gain1
2
Gain
Simulink Block Library 2.2Copyright (c) 1990-1998 by The MathWorks, Inc.
Sources Sinks NonlinearLinearDiscrete
Demos
In1 Out1
Connections
Blocksets & Toolboxes
Biblioteca de Blocos Simulink
– O Simullink contém bibliotecas que contêm componentes que podem ser usados para construir modelos
– Uma biblioteca de blocos pode conter outras bibliotecas como blocos
XY Graph
simout
To Workspace
untitled.mat
To File
STOP
Stop Simulation
Scope
0
Display
Sinks é uma bibloteca de componentes
Construção dum modelo
SumSine Wave
Janela do modloe
Biblioteca de blocos lineares
Biblioteca de Fontes
Use o botão esquerdo do rato para arrastar blocos para a janela do modelo
Uniform RandomNumber
Step
Sine Wave
SignalGenerator
RepeatingSequence
RandomNumber
Ramp
PulseGenerator
untitled.mat
From File
[T,U]
From Workspace
Discrete PulseGenerator
12:34
Digital Clock
1
Constant
Clock
Chirp Signal
Band-LimitedWhite Noise
(s-1)
s(s+1)
Zero-Pole
1
s+1
Transfer Fcn
Sum
x' = Ax+Bu y = Cx+Du
State-Space
1
SliderGain
K
MatrixGain
s
1
Integrator
1
Gain
Dot Product
du/dt
Derivative
SumSine Wave
1
GainSumSine Wave
1
Gain
SumSine Wave
1
Gain
Use o botão do lado esquerdo do rato para
Clicar numa porta e arrastar a lição
SumSine Wave Scope
1
Gain
SumSine Wave Scope
1
Gain
Use o botão do lado Direito para fazer ligações
Ligação de blocos
Mais sobre o Simulink• Clique duas vezes num bloco para abrir a sua caixa
de diálogo. Os parâmetros para o boloco podem ser estabelecidos nessa caixa. – Exemplo: definir a amplitude, frequência, fase e
frequência da fonte sinusoidal
• Clique no botão de HELP da caixa de diálogo dum bloco para activar o browser web no ficheiro de ajuda desse componente.
• Uma vez seleccionado, o bloco pode ser rodado e variado o seu tamanho– Objectivo: o tornar o diagrama de blocos mais legível
Parâmetros de simulação
• O menu de simulação pode ser usado para definir os parâmetros da simulação
• Pode-se especificar o solver adequado. – Para sistemas discretos de passo fixo usar o solver
discreto de passo fixo– Para sistemas multi-taxa usar o solver discreto de passo
variável
• Pode-se também especificar variáveis que podem ser obtidas ou devolvidas ao espaço de trabalho MATLAB
• Pode seleccionar porções do modelo usando o rato e transformá-los em subsistemas
• Pode mascarar subsistemas para esconder a complxidade do utilizador
• .
This figure demonstratesa simple first order IIR filter
Zero-OrderHold
OriginalSignal
In1Out1
My 1st orderfilter
FunctionGenerator
FilteredSignal
This figure demonstratesa simple first order IIR filter
Zero-OrderHold
OriginalSignal
In1Out1
My 1st orderfilter
FunctionGenerator
FilteredSignal
1
Out1
z
1
Unit Delay
Sum
B0
B0
A1
A1
1
In1
Subsistemas
Exemplos
Função Passo Unitário%F1_7a Unit step functiont=-2:0.01:5; % make t a vector of 701 pointsq=size(t);f=zeros(q(1),q(2)); % set f = a vector of zerosq=size(t(201:701));f(201:701)=ones(q(1),q(2));% set final 500 points of f to 1plot(t,f),title('Fig.1.7a Unit step function');axis([-2,5,-1,2]); % sets limits on axesxlabel('time, t');ylabel(' u(t)');grid;
%F1_7a Unit step functiont=-2:0.01:5; % make t a vector of 701 pointsq=size(t);f=zeros(q(1),q(2)); % set f = a vector of zerosq=size(t(201:701));f(201:701)=ones(q(1),q(2));% set final 500 points of f to 1plot(t,f),title('Fig.1.7a Unit step function');axis([-2,5,-1,2]); % sets limits on axesxlabel('time, t');ylabel(' u(t)');grid;
.0
)( 00
ottif
ttifBttBu
Função Passo Genérico
%F1_7b Signal g(t) multiplica f(101:501)=2.5-cos(5*t(101:501) por funções pulso ([u(t+1)-u(t-3)]
%F1_7b Signal g(t) multiplied by a pulse functionst= -2:0.01:5;q=size(t);f=zeros(q(1),q(2));f(101:501)=2.5-cos(5*t(101:501));plot(t,f),title('Fig.1.7b Signal g(t) multiplied by a
pulse functions');axis([-2,5,-1,4]);xlabel('time, t');ylabel(' g(t)[u(t+1)-u(t-3)]');grid;
%F1_7b Signal g(t) multiplied by a pulse functionst= -2:0.01:5;q=size(t);f=zeros(q(1),q(2));f(101:501)=2.5-cos(5*t(101:501));plot(t,f),title('Fig.1.7b Signal g(t) multiplied by a
pulse functions');axis([-2,5,-1,4]);xlabel('time, t');ylabel(' g(t)[u(t+1)-u(t-3)]');grid;
Sequências1. Sequência Rampa2. Uma sequência rampa transladada com declive B é definida
como:
3. Sequência rampa unitária e sequências de rampa transladada
)()( 0nnBng
Código MATLAB :n=-10:1:20;f=2*(n-10);stem(n,f);
Código MATLAB :n=-10:1:20;f=2*(n-10);stem(n,f);
Sequência Exponencial Real1. Definida como: Exemplo para A = 10 e a = 0.9, a sequência aproxima-se de zero quando n
tende para infinito e aproxima-se de mais infinito quando n tende para menos infinito
naAnf )()(
MATLAB Code:n=-10:1:10;f =10*(.9).^n;stem(n,f);axis([-10 10 0 30]);
Sequência Sinusoidal1. Uma sequência sinusoidal pode ser descrita como :
2. Onde A é um número real positivo (amplitude), N é o período, e a a fase. 3. Exemplo: 4. A = 5, N = 16 5. e
6. Código MATLAB :7. n=-20:1:20;8. f=5*[cos(n*pi/8+pi/4)]; 9. stem(n,f);
N
nAnf
2cos)(
.4/a
Sequência sinusoidal modulada exponencialmente
1. Obtém-se multiplicando uma sequência exponencial por uma sequência sinusoidal. Pode ser descrita por :
2. Exemplo: 3. A = 10, N = 16, a = 0.9
Código MATLAB :1. n=-20:1:20;2. f=10*[0.9 .^n];3. g=[cos(2*n*pi/16+pi/4)];4. h=f .*g;5. stem(n,h);6. axis([-20 20 -30 70]);
N
naAng n 2
cos)()(
.4/