Introdução ao MatLab Aula 4 Sistemas Multimédia 3º ano Engenharia Informática Universidade Católica de Angola 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 Fluxo Instruçõ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 1. 2. 3. 4. Ondas sinusoidais Geradores de funções From MATLAB workspace Ficheiros em disco Sistemas 1. Interligação de Blocos lineares e não lineares Sumidouros 1. 2. 3. 4. Displays scopes FFT scopes Para o MATLAB workspace Para ficheiros em disco Um modelo Simulink simples Scope 2 Sine Wave Gain Gain1 Sum 0.9 Scope1 Unit Delay 1 z Biblioteca de Blocos Simulink – O Simullink contém bibliotecas que contêm componentes que podem ser usados para construir modelos – Uma bilioteca de blocos pode conter outras bibliotecas como blocos In1 Out1 Scope Sources Sinks Discrete Linear Nonlinear XY Graph Connections 0 Blocksets & Toolboxes Simulink Block Library 2.2 Copyright (c) 1990-1998 by The MathWorks, Inc. Demos Sinks é uma bibloteca de componentes Display untitled.mat simout To File To Workspace STOP Stop Simulation Construção dum modelo 1 Gain Sine Wave Sum Janela do modloe Sum 1 1 s Integrator s+1 Transfer Fcn (s-1) x' = Ax+Bu y = Cx+Du s(s+1) State-Space Zero-Pole du/dt 1 Use o botão esquerdo do rato para arrastar blocos para a janela do modelo Constant Signal Generator Step Ramp Sine Wave Repeating Sequence Discrete Pulse Generator Pulse Generator Chirp Signal 12:34 Clock Digital Clock untitled.mat [T,U] From File From Workspace Random Number Uniform Random Number Band-Limited White Noise Derivative Dot Product K 1 Matrix Gain Slider Gain Biblioteca de blocos lineares Biblioteca de Fontes Ligação de blocos 1 1 Sine Wave Sine Wave Gain Gain Sum Sine Wave Sum 1 Gain Sum Use o botão do lado esquerdo do rato para Clicar numa porta e arrastar a lição 1 Sine Wave Gain 1 Sum Scope Sine Wave Use o botão do lado Direito para fazer ligações Gain Sum Scope 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 Subsistemas • Pode seleccionar porções do modelo usando o rato e transformá-los em subsistemas Function Generator Zero-Order Hold Original Signal This figure demonstrates a simple first order IIR filter In1 Out1 Filtered Signal My 1st order filter • • Pode mascarar subsistemas para esconder a complxidade do utilizador . 1 Function Generator Zero-Order Hold This figure demonstrates a simple first order IIR filter Original Signal B0 1 B0 Sum A1 In1 Out1 My 1st order filter In1 Filtered Signal A1 1 z Unit Delay Out1