Sistemas de Processamento Digital Engenharia de Sistemas e Informática Guia 0 2005/2006 4.º Ano/ 2.º Semestre Utilização do MATLAB e do LABVIEW O MATLAB é um programa cálculo numérico que pode ser usado interactivamente. A sua estrutura de dados fundamental é a matriz, que pode ter elementos reais ou complexos. Embora na sua versão base o MATLAB já possua um vasto conjunto de funções de carácter genérico, existem várias bibliotecas de funções adicionais (designadas por toolboxes) que expandem as suas capacidades em domínios de aplicação mais específicos. 1. Variáveis e expressões No MATLAB todas as variáveis são identificadas por um nome que é formado por um ou mais símbolos alfanuméricos, não podendo o primeiro ser um dígito. É também possível utilizar o símbolo _ como parte do identificador de uma variável. Para criar a variável x com o valor 2 podemos escrever: » x=2 e o MATLAB responde com x = 2 Para criar a variável y com o valor (complexo) 2+i podemos escrever: » y =2+i y = 2.0000 + 1.0000i Note-se que o MATLAB inicializa as variáveis i e j com a raiz quadrada de –1. Para calcular o valor z = x ⋅ y − 4 y + y 3 escrevemos: » z=x*y-4/y+y^3 z = 4.4000 +13.8000i Para obter informação sobre as operações elementares que podem ser usadas em expressões podemos usar o comando help ops. Sistemas de Processamento Digital Manuel A. E. Baptista 1 2. Funções Entre as funções base do MATLAB incluem-se as funções trigonométricas, exponenciais e logarítmicas. Para determinar o valor de uma função num dado ponto há apenas que indicar qual a função e o ponto em causa. Assim, se quisermos calcular sin 0.5 teremos simplesmente de escrever: » sin(0.5) ao que o MATLAB responde com ans = 0.4794 Se nada for dito em contrário o MATLAB atribui o resultado da última operação à variável ans. Se quiséssemos guardar o valor de sin 0.5 na variável a, teríamos de escrever: » a=sin(0.5); Uma vez a expressão foi terminada com o carácter ; o MATLAB não mostra o seu resultado (esta possibilidade é particularmente útil quando estamos a efectuar cálculos intermédios envolvendo grande quantidade de dados e não necessitamos de saber quais os seus valores). Para obter uma listagem e descrição das funções elementares do MATLAB usa-se o comando help elfun. 3. Vectores A forma mais simples de criar vectores é simplesmente listar os seus elementos. Para tal é apenas necessário usar os caracteres [ e ] para sinalizar o início e o fim do vector. Criemos então o vector u: » u=[1 0 3 5 –1 4] u = 1 0 3 5 -1 4 A criação de vectores de pontos igualmente espaçados é feita de uma forma muito simples. Se quisermos criar um vector v com pontos de 0 a 10 igualmente espaçados de 2 unidades, fazemos simplesmente: » v=0:2:10 v = 0 2 4 6 8 10 Se quisermos somar os vectores u e v (podemos fazê-lo pois têm a mesma dimensão) temos simplesmente de fazer: » u+v ans = 1 2 7 11 7 14 Se quisermos multiplicar o vector u por 0.4 temos apenas de fazer: Sistemas de Processamento Digital Manuel A. E. Baptista 2 » 0.4*u ans = 0.4000 0 1.2000 2.0000 -0.4000 1.6000 Para determinar o valor de uma função em todos os elementos de um vector basta indicar o vector como argumento da função. Assim se pretendermos calcular a função coseno nos pontos correspondentes aos elementos do vector v, basta efectuar: » cos(v) ans = 1.0000 -0.4161 -0.6536 0.9602 -0.1455 -0.8391 4. Gráficos Para desenhar um gráfico de uma função real de variável real, teremos de definir dois vectores, um com os valores da variável independente e outro com os valores da função calculados em cada um desses pontos. Assim se quisermos desenhar o gráfico da função seno no intervalo [0,10] teremos de definir: » x=0:0.05:10; » y=sin(x); Para desenhar o gráfico usaremos o comando: » plot(x,y) Após este comando o MATLAB abre uma janela onde é mostrado o gráfico da função. O comando help graphics permite listar as funções gráficas disponíveis. 5. Matrizes O modo mais simples de definir uma matriz é indicando os seus elementos. Estes deverão estar compreendidos entre os caracteres [ e ] e são listados linha a linha; cada linha da matriz é terminada com o caractere; ou com ENTER. Na verdade os vectores (linha) já apresentados não são mais do que matrizes com apenas uma linha. Criemos então as matrizes A e B: » A=[0 2 1; 3 4 5] A = 0 3 2 4 1 5 » B=[0 1 0; 2 3 4] B = 0 2 1 3 Sistemas de Processamento Digital 0 4 Manuel A. E. Baptista 3 Se quisermos somar as matrizes A e B faremos simplesmente: » A+B ans = 0 5 3 7 1 9 Se quisermos calcular a matriz C = A ⋅ A T devemos fazer: » C=A*A’ C = 5 13 13 50 Note-se que no caso geral de uma matriz com elementos complexos, o operador apóstrofe fornece a matriz transposta conjugada. Em tal caso dever-se-á utilizar o operador .’ (ponto-apóstrofe) para determinar a matriz transposta. É também possível a partir de duas matrizes de iguais dimensões obter outra cujos elementos sejam os produtos ou quocientes dos elementos das matrizes originais. Para tal usam-se os operadores .* e ./. Assim, se quisermos multiplicar a matrizes A e B elemento a elemento: » A.*B ans = 0 6 2 12 0 20 A expressão C^3 fornece a potência de ordem 3 da matriz (quadrada) C: » C^3 ans = 10265 38272 38272 142745 A expressão B.^3 fornece uma matriz com as potências de ordem 3 dos elementos da matriz B: » B.^3 ans = 0 8 1 27 0 64 Existem operações que permitem seleccionar um ou mais elementos de uma matriz. Por exemplo, o elemento da linha 2 e coluna 3 da matriz A, obtém-se fazendo: » A(2,3) ans = 5 Para obter os elementos da primeira linha de B deve-se fazer: » B(1,:) ans = 0 1 Sistemas de Processamento Digital 0 Manuel A. E. Baptista 4 Para obter os elementos da segunda coluna de A faz-se: » A(:,2) ans = 2 4 Para além de todas estas operações sobre matrizes existem um vasto leque de funções especialmente dedicadas à manipulação de matrizes. Uma listagem e descrição destas funções pode ser obtida por intermédio dos comandos help elmat e help matfun. Uma função bastante útil é a função inv que permite calcular inversa de uma matriz quadrada: » D=inv(C) ans = 0.6173 -0.1605 -0.1605 0.0617 A função eig calcula os valores próprios de uma matriz: » eig(C) ans = 1.5144 53.4856 Refira-se que esta função permite também obter vectores próprios de uma matriz. Uma descrição detalhada do seu funcionamento obtém-se fazendo help eig. A função size retorna um vector (linha) em que o primeiro elemento é o número de linhas e o segundo o número de colunas de uma matriz passada como argumento: » size(A) ans = 2 3 A função eye aceita como argumento um inteiro positivo e retorna a matriz identidade correspondente. A função zeros retorna uma matriz com todos os elementos nulos e a função ones retorna uma matriz com todos os elementos iguais a um; em ambas, os argumentos definem o número de linha e de colunas da matriz a construir. Sistemas de Processamento Digital Manuel A. E. Baptista 5 Polinómios Embora o MATLAB não permita trabalhar directamente com polinómios, dispõe de um conjunto de funções dedicadas à manipulação de polinómios. Uma listagem e descrição destas funções pode ser obtida fazendo help polyfun. No MATLAB um polinómio numa variável, por exemplo, x é representado por uma vector linha cujos elementos são os coeficientes das sucessivas potências de x, listados das mais alta potência até ao termo independente. Assim, o polinómio p ( x) = x 4 + 10 x 3 + 35 x 2 + 50 x + 24 será representado por: » p=[1 10 35 50 24] p = 1 10 35 50 24 A função roots permite calcular as raízes de um polinómio: » raizes=roots(p) raizes = -4.0000 -3.0000 -2.0000 -1.0000 A função poly permite obter um polinómio a partir de um vector (coluna) com as suas raízes. O polinómio retornado tem o coeficiente da mais alta potência unitário: » poly(raizes) ans = 1 10.0000 35.0000 50.0000 24.0000 Esta função quando aplicada a uma matriz quadrada retorna o seu polinómio característico (sempre com o coeficiente da mais alta potência unitário). Assim o polinómio característico da matriz C será dado por: » poly(C) ans = 1.0000 -55.0000 81.0000 Para somar ou subtrair dois polinómios basta somar os vectores com os respectivos coeficientes. No entanto estes vectores terão de ter o mesmo número de elementos. Se tal não acontecer ter-se-á de aumentar o vector de menor dimensão com elementos nulos. Para efectuar a soma r ( x) = p( x) + q( x) , onde q( x) = −10 x 2 + 20 x − 24 , deveremos fazer: » q=[–10 20 –24]; » r=p+[0 0 q] r = 1 10 Sistemas de Processamento Digital 25 70 0 Manuel A. E. Baptista 6 Para multiplicar dois polinómios utiliza-se a função conv. O produto m( x) = p( x) ⋅ q( x) determina-se do seguinte modo: » m=conv(p,q) m = -10 -80 -174 -40 -80 -720 -576 A função deconv realiza a divisão entre polinómios, fornecendo os polinómios quociente e resto. Assim os polinómios l (x) e n(x) tais que p( x) = l ( x) ⋅ q( x) + n( x) , onde o grau de n(x) é inferior ao de q(x) , obtêm-se fazendo: » [l,n]=deconv(p,q) l = -0.1000 -1.2000 -5.6600 0 0 n = 0 Sistemas de Processamento Digital 134.4000 -111.8400 Manuel A. E. Baptista 7