introdução ao matlab aula 4 multimédia engenharia biomédica

25
Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

Upload: internet

Post on 18-Apr-2015

115 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

Introdução ao MatLabAula 4

Multimédia

Engenharia Biomédica

Page 2: Introdução ao MatLab Aula 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.

Page 3: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

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.

Page 4: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

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)

Page 5: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

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

Page 6: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

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 ~=.

Page 7: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

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

Page 8: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

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.

Page 9: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

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

Page 10: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

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

Page 11: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

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

Page 12: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

Um modelo Simulink simples

z

1Unit Delay

SumSine Wave

Scope1

Scope

0.9Gain1

2

Gain

Page 13: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

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

Page 14: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

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

Page 15: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

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

Page 16: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

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

Page 17: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

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

Page 18: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

• 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

Page 19: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

Exemplos

Page 20: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

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

Page 21: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

%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;

Page 22: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

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);

Page 23: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

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]);

Page 24: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

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

Page 25: Introdução ao MatLab Aula 4 Multimédia Engenharia Biomédica

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/