Universidade do Estado de Santa Catarina - UDESC · Web viewNo entanto, por questões de tempo,...

27
Universidade do Estado de Santa Catarina - UDESC Centro de Ciências Tecnológicas - CCT Departamento de Engenharia Elétrica - DEE INICIAÇÃO AO SOFTWARE MATLAB 1.1 Introdução Uma das atividades mais importantes em Engenharia é a de projeto. Em particular, ao se projetar equipamentos eletrônicos, máquinas, processos químicos, etc., é fundamental para o engenheiro avaliar o comportamento dinâmico do sistema construído. No caso de sistemas simples, muitas vezes a experiência do indivíduo é suficiente para as decisões durante o projeto, decisões que influem no desempenho e na operação do sistema. Entretanto, quando se trata de um sistema complexo ou cujo comportamento não é simples, o profissional deve lançar mão de “ferramentas” que permitam antecipar os problemas e auxiliá-lo em suas decisões. Essas ferramentas são colocadas à disposição dos projetistas através de conjuntos de programas em computadores digitais (softwares aplicativos) que, dependendo do grau de integração e de sofisticação na interface homem-máquina, podem constituir os denominados sistemas CAD (Computer Aided Design), dirigidos para áreas específicas das Engenharias. Nos anos antecedentes ao aprimoramento dos computadores digitais, a análise e projeto por simulação de sistemas descritos por equações diferenciais eram comumente obtidas via computadores analógicos (abrange um conjunto ordenado de amplificadores operacionais, potenciômetros, fontes de tensão de referência, componentes não lineares, etc.). Para operação adequada dos computadores analógicos, existia a necessidade do usuário ter considerações cuidadosas na magnitude e escalonamento no tempo das variáveis. Operações complexas, tais como, raiz quadrada, funções trigonométricas e outras, requeriam uma hardware especial na implementação particular. A solução de equações de ordem superior ou para várias equações simultâneas resultava em um complicado painel de fios. Com o aparecimento de linguagens de alto nível, tornou-se possível a solução de problemas da engenharia, que eram formalmente resolvidos em um computador analógico, por um computador digital.

Transcript of Universidade do Estado de Santa Catarina - UDESC · Web viewNo entanto, por questões de tempo,...

Page 1: Universidade do Estado de Santa Catarina - UDESC · Web viewNo entanto, por questões de tempo, eles não precisam ser digitados durante a execução dos exercícios. 1.3 Descrição

Universidade do Estado de Santa Catarina - UDESCCentro de Ciências Tecnológicas - CCT

Departamento de Engenharia Elétrica - DEE

INICIAÇÃO AO SOFTWARE MATLAB

1.1 IntroduçãoUma das atividades mais importantes em Engenharia é a de projeto. Em particular, ao se projetar

equipamentos eletrônicos, máquinas, processos químicos, etc., é fundamental para o engenheiro avaliar o comportamento dinâmico do sistema construído. No caso de sistemas simples, muitas vezes a experiência do indivíduo é suficiente para as decisões durante o projeto, decisões que influem no desempenho e na operação do sistema. Entretanto, quando se trata de um sistema complexo ou cujo comportamento não é simples, o profissional deve lançar mão de “ferramentas” que permitam antecipar os problemas e auxiliá-lo em suas decisões. Essas ferramentas são colocadas à disposição dos projetistas através de conjuntos de programas em computadores digitais (softwares aplicativos) que, dependendo do grau de integração e de sofisticação na interface homem-máquina, podem constituir os denominados sistemas CAD (Computer Aided Design), dirigidos para áreas específicas das Engenharias.Nos anos antecedentes ao aprimoramento dos computadores digitais, a análise e projeto por simulação de sistemas descritos por equações diferenciais eram comumente obtidas via computadores analógicos (abrange um conjunto ordenado de amplificadores operacionais, potenciômetros, fontes de tensão de referência, componentes não lineares, etc.). Para operação adequada dos computadores analógicos, existia a necessidade do usuário ter considerações cuidadosas na magnitude e escalonamento no tempo das variáveis. Operações complexas, tais como, raiz quadrada, funções trigonométricas e outras, requeriam uma hardware especial na implementação particular. A solução de equações de ordem superior ou para várias equações simultâneas resultava em um complicado painel de fios. Com o aparecimento de linguagens de alto nível, tornou-se possível a solução de problemas da engenharia, que eram formalmente resolvidos em um computador analógico, por um computador digital.

Para a maioria das áreas tecnológicas, existem programas com o objetivo de auxiliar o projetista e possibilitar uma visão dos problemas antes da montagem propriamente dita, do equipamento. Na área de controle de processos existem diferentes ambientes computacionais que permitem ao usuário simular diferentes tipos de sistemas físicos com o mínimo de dificuldade (interface homem-máquina extremamente amigável). Um Software para simulação analógica e digital, e de grande importância para análise e projeto, é o Matlab.

1.2 Fundamentos do MatlabMatrix Laboratory - MATLAB®

O que é o Matlab? Um poderoso programa interativo voltado à solução de problemas científicos e da engenharia. Como o nome já diz, o Matlab é um software específico para manipulação e processamento de matrizes. Assim, a matriz é o elemento básico de armazenamento de informações. A 1 a

versão foi apresentada em 1985, e vem sendo atualizada freqüentemente, sendo as últimas direcionadas ao ambiente Windows (proporciona farta interação gráfica). Uma grande vantagem do Matlab com relação aos demais softwares matemáticos existentes é a possibilidade de criação de novas funções pelo próprio usuário (estas funções podem ser criadas em Linguagem C, que é a linguagem de concepção do Matlab). Essa possibilidade faz com que a evolução do software não fique restrita aos conhecimentos do

Page 2: Universidade do Estado de Santa Catarina - UDESC · Web viewNo entanto, por questões de tempo, eles não precisam ser digitados durante a execução dos exercícios. 1.3 Descrição

Laboratório de Automação e Informática Industrial

fabricante e qualquer usuário pode propor a inclusão de novas funções na versão original. Hoje em dia, além do módulo principal, o Matlab possui módulos auxiliares (toolboxes) voltados para diversos assuntos específicos, tais como: Sistemas Não Lineares, Processamento de Sinais, Controle Robusto, Identificação, e outros.

Antes de começar qualquer atividade no Matlab, é importante que seja explicada a metodologia usada nesta apostila. No decorrer das explicações serão apresentados exemplos a serem executados no Matlab. Para maior clareza, os comandos a serem executados foram colocados dentro de molduras (caixas) e ao lado de cada comando é utilizado um recurso de comentário explicando a função de cada comando. Estes comentários são aceitos pelo Matlab e podem ser usados normalmente. No entanto, por questões de tempo, eles não precisam ser digitados durante a execução dos exercícios.

1.3 Descrição de Comandos Básicos

1.3.1 Operações Matemáticas BásicasAo se clicar no ícone do Matlab aparece o ambiente Matlab contendo o prompt onde serão feitas

as declarações dos comandos e variáveis.

To get started, type one of these commands: helpwin, helpdesk, or demo.For information on all of the Mathworks products, type tour.

>> % prompt do Matlab

Trabalhar no ambiente Matlab é simples porque a maioria dos comandos são usados como se você estivesse escrevendo-os matematicamente.

>> a=3/4 a = 0.75

Caso não seja desejado mostrar o valor da resposta, deve ser colocado ao final de cada declaração o caractere ‘ ; ’. Desta forma a apresentação da resposta é suprimida. Pode-se também inserir um texto de comentário digitando antes do texto o caracter ‘ % ’.

>> b=2 % sem o caractere ‘;’ no final da sentença o resultado é apresentado. b = 2>> c=3; % com o caractere ‘;’ no final da sentença o resultado não é apresentado.>> d=b+c % o resultado é armazenado na variável ‘d’ e é apresentado. d = 5>> b+c % se nenhum nome é atribuído a uma variável ela é armazenada em “ans”. ans = 5

Para se observar o valor de uma variável basta digitar seu nome.

>> bb = 2

Como qualquer outra linguagem de programação, o Matlab tem regras a respeito dos nomes de variáveis. Elas devem começar sempre com uma letra, podendo vir seguida de letras ou números. Variáveis escritas em letra maiúscula são diferentes das escritas em letra minúscula (case sensitive). Note que no exemplo anterior a variável b foi definida com letra minúscula (b=2) e então deve ser referenciada sempre desta forma. Caso fosse utilizada mais adiante com letra maiúscula (D=B+C), a função não seria reconhecida pelo Matlab.

Quanto as operações matemáticas, o Matlab as realiza na seguinte ordem:^ potência* multiplicação

2

Page 3: Universidade do Estado de Santa Catarina - UDESC · Web viewNo entanto, por questões de tempo, eles não precisam ser digitados durante a execução dos exercícios. 1.3 Descrição

Laboratório de Automação e Informática Industrial

/ divisão+ adição - subtração

As operações são realizadas da esquerda para direita mas os parênteses podem afetar a ordem das operações.>> 1+2^3/4*2 % 1+{[(2^3)/4]*2} ans = 5>> 1+2^3/(4*2) % 1+[(2^3)/(4*2)] ans = 2>> (1+2)^3/(4*2) % [(1+2)^3]/(4*2) ans = 3.3750

1.3.2 Variáveis e Funções PredefinidasO Matlab possui variáveis predefinidas que são apresentadas a seguir: i e j = (se usar i e j, limpar após o uso com o comando clear) pi = (3.1416) Inf = NaN = não número (ex.: 0/0)

>> 2*pi ans = 6.2832>> d=4/Inf d = 0>> z=2+2i z = 2.0000 + 2.0000i

O Matlab possui ainda várias funções predefinidas, tais como funções trigonométricas e outras funções matemáticas muito utilizadas, tais como exponencial e raiz quadrada (denominadas funções transcendentais) já implementadas.

>> u=sin(3*pi/4) % o Matlab usa como default a medida de ângulo em radianos u = 0.7071>> v=sqrt(4) % o comando sqrt (square root) executa a operação raiz quadrada v = 2>> abs(z) % valor absoluto (módulo) da variável z definida anteriormente ans = 2.8284>> angle(z) % ângulo (fase) do número variável z definida anteriormente ans = 0.7854>> exp(-1) % exponencial ans = 0.3679>> log10(100) % logaritmo na base 10 ans = 2

Os comandos help elfun e help especfun apresentam a listagem das principais funções do Matlab.

1.3.3 PolinômiosUm polinômio pode ser formado digitando-se seus coeficientes, conforme mostrado abaixo.

>> P=[1 6 8]; % declaração do polinômio P = s2 + 6s + 8

O valor do polinômio para um dado número N é determinado através do comando polyval(p,N)

3

Page 4: Universidade do Estado de Santa Catarina - UDESC · Web viewNo entanto, por questões de tempo, eles não precisam ser digitados durante a execução dos exercícios. 1.3 Descrição

Laboratório de Automação e Informática Industrial

>>polyval (P,1)ans =

15Para obter as raízes de um polinômio qualquer procede-se da seguinte forma:

>> R=roots(P) R = -4

-2

A operação inversa também é possível, ou seja, a partir das raízes de um polinômio podemos determinar seus coeficientes. Para tanto, utiliza-se o comando poly, conforme mostrado a seguir.>> S=poly([-2 -4]) % raízes do polinômio S = 1 6 8

Para multiplicar dois ou mais polinômios utiliza-se o comando conv, conforme mostrado a seguir.>> P1=[1 4 8]; % polinômio P1 = s2 + 4s + 8>> P2=[1 2]; % polinômio P2 = s + 2>> PM=conv(P1,P2) % PM = (s2 + 4s + 8)*(s + 2) PM = 1 6 16 16 % PM = s3 + 6s2 + 16s + 16

Para dividir dois polinômios utiliza-se o comando deconv. Como esta operação pode não ser exata, ou seja, pode existir um resto, utiliza-se a seguinte forma:>> [Q,R]=deconv(P1,P2) % equivale a operação (s2 + 4s + 8)/(s + 2) Q = 1 2 % Q = s + 2 R = 0 0 4 % R = 4

A variável Q armazena o quociente da divisão, ao passo que o resto é armazenado na variável R.

1.3.4 Vetores e MatrizesDa mesma forma que é declarado um polinômio, para construir um vetor, basta colocar seus

valores dentro de colchetes, conforme mostrado abaixo.

>> A=[1 6 8] % declaração do vetor A = [ 1 6 8] A = 1 6 8

Um vetor também pode ser criado usando o operador ":", conforme mostrado a seguir.

>> B=0:1:5 % declaração do vetor contendo elementos de 0 à 5 com intervalos de 1 em 1 B = 0 1 2 3 4 5

Alternativamente, o comando linspace(x,y,n) ) pode ser usado para criar vetores com n elementos que são espaçados em incrementos lineares entre x e y.

>> C=linspace(0,5,6)C = 0 1 2 3 4 5

O comando logspace(x,y,m) pode ser usado para criar vetores com n elementos que são espaçados em incrementos logarítmicos entre 10x e 10y.

>> C=logspace(0,5,6)C = 1 10 100 1000 10000 100000

As matrizes são declaradas no Matlab através da especificação de vetores como mostrado a seguir:

4

Page 5: Universidade do Estado de Santa Catarina - UDESC · Web viewNo entanto, por questões de tempo, eles não precisam ser digitados durante a execução dos exercícios. 1.3 Descrição

Laboratório de Automação e Informática Industrial

>> A= [1 2; 3 4]A =

1 23 4

Como pode ser observado, os valores devem ser declarados dentro de colchetes. Os elementos de cada linha devem ser separados por espaços em branco ou por vírgula. O final de cada linha, exceto a última, é indicado por ponto e vírgula.

Para se determinar o tamanho de uma matriz utiliza-se o comando size(X).

>>size(A)ans =

2 2

Quando se deseja modificar um elemento da matriz pode-se utilizar o comando A(i,j).

>> A(2,2)=5 %modifica o 2o.elemento da 2a. linha.A =

1 23 5

>> A(3,3)=6 %adiciona um elemento a matriz existente.A =

1 2 03 5 00 0 6

A seguir são apresentados diferentes maneiras de definir matrizes.

>> A = [A;[7 8 9]];A =

1 2 0 3 5 00 0 6 7 8 9

>> B = A(2:3,1:3)B =

3 5 00 0 6

>> B = B( :,[0 1 1])B =

5 00 6

>> D = diag([1 2]) %cria uma matriz diagonal com os elementos de entradaD =

1 00 2

>> eye(4) %cria uma matriz identidadeans =

1 0 0 00 1 0 00 0 1 00 0 0 1

>> ones(2,3) % cria uma matriz toda de unsans = 1 1 1 1 1 1

5

Page 6: Universidade do Estado de Santa Catarina - UDESC · Web viewNo entanto, por questões de tempo, eles não precisam ser digitados durante a execução dos exercícios. 1.3 Descrição

Laboratório de Automação e Informática Industrial

>> zeros(1,4) % cria uma matriz toda de zerosans = 0 0 0 0

1.3.5 Operações com MatrizesAdição:

>> B + Dans =

6 00 8

Multiplicação:>> B * Dans =

5 00 12

Para a divisão, o Matlab interpreta os símbolos “ / ” e “ \ ”.

>> x = P \ Q % P.x = Q x = P-1. Q>> y = Q / P % y.Q = P y = Q. P-1

Obs.: As dimensões internas das matrizes multiplicas ou divididas devem ser iguais.

>>X = eye(2);>>Y = [1 2;3 4;5 6];>>Z = X*Y'; % O termo “ ' ” computa a matriz conjugada transposta da matriz Y.>>Z = X*Y.' % O termo “. ' ” computa a matriz transposta da matriz Yans =

1 3 52 4 6

Outras operações possíveis com matrizes:>> det (X) % determinante de X>> inv (X) % inversa de X>> rank (X) % ordem de X>> eig (X) % autovalores associados com a matriz quadrada X >> expm (X) % eX

O Matlab trabalha de maneira diferente quando realiza operações com conjuntos ao invés de matrizes. A operação com conjuntos é feita elemento a elemento.

>> R = [4 5;0 1];>> S = [2 3;4 6];>> R.*Sans =

8 150 6

1.3.6 Operadores RelacionaisOs operadores relacionais no MATLAB incluem todas as comparações habituais:< Menor que

6

Page 7: Universidade do Estado de Santa Catarina - UDESC · Web viewNo entanto, por questões de tempo, eles não precisam ser digitados durante a execução dos exercícios. 1.3 Descrição

Laboratório de Automação e Informática Industrial

<= Menor ou igual a> Maior que>= Maior ou igual a== Igual a~= Não igual a

Esses operadores podem ser usados para comparar dois conjuntos do mesmo tamanho ou para comparar um conjunto a um escalar

>> v = R < Sv =

0 01 1

>> v = R > 4v =

0 10 0

Uma aplicação interessante, para se evitar divisão por zero:

>> x = (-3:3) / 3x = -1.0000 -0.6667 -0.3333 0 0.3333 0.6667 1.0000

>> sin(x)./ xWarning: Divide by zeroans = 0.8415 0.9276 0.9816 NaN 0.9816 0.9276 0.8415

>> x = x + (x==0)*eps ; Se x = 0, acrescenta eps = 2,2e-16x = -1.0000 -0.6667 -0.3333 0.0000 0.3333 0.6667 1.0000

>> sin(x)./xans = 0.8415 0.9276 0.9816 1.0000 0.9816 0.9276 0.8415

1.3.7 Operadores LógicosOs operadores lógicos permitem combinar ou negar expressões relacionais. São eles:

& E| Ou~ Nãoxor(x,y) Ou exclusivoany(x,y) Retorna 1 para cada coluna não nula da matriz xall(x,y) Retorna 1 para cada coluna da matriz x com todos os elementos não nulosisnan(x) Retorna 1 para os NAN de xisinf(x) Retorna 1 para os Inf de xfinite(x) Retorna 1 para os valores finitos de x

>> v = R & Sv =

1 10 1

>> v = ~v

7

Page 8: Universidade do Estado de Santa Catarina - UDESC · Web viewNo entanto, por questões de tempo, eles não precisam ser digitados durante a execução dos exercícios. 1.3 Descrição

Laboratório de Automação e Informática Industrial

v =0 01 0

1.4 Gráficos no MatlabO Matlab é um software capaz de traçar vários tipos de gráficos, sejam eles em duas ou mais

dimensões, em escalas lineares, logarítmicas ou semilogarítmicas.

1.4.1 Criando GráficosGráficos bidimensionais comuns podem ser gerados no Matlab usando o comando plot. Em muitas

aplicações usa-se o comando plot(v) para se criar um gráficos das componentes do vetor real v versus o índice de cada componente.

>> x=0:1:10; % x assumirá valores entre 0 e 10 com intervalos de 1>> plot(x)

O comando plot(v) irá plotar a parte real de v versus a parte imaginária se v for um vetor de números complexos.

Se o argumento de plot for uma matriz, o Matlab trata cada linha como um vetor distinto a ser plotado e coloca todos eles no mesmo gráfico.Exemplo:

% hilbplot.m% cria uma matriz de Hilbert 5x5 e plota suas linhasclf % limpa a janela do gráficoH = hilb(5) % cria uma matriz de Hilbert 5x5plot (H) % plota a matriz

Para criar um gráfico linear da forma (x,y) onde x é uma variável e y uma função, ou seja, y=f(x), digita-se o comando plot(x,y). É necessário, no entanto, fornecer uma faixa de variação da variável x, o que, por exemplo, pode ser feito conforme mostrado abaixo.

>> x=-15:0.05:15; % x assumirá valores entre -15 e +15 com intervalos de 0.05>> y=sin(x);>> plot(x,y)

O comando plot (X,Y), onde X e Y são matrizes, irá plotar as colunas de X versus as colunas de Y.

No caso de se desejar mais curvas em um mesmo gráfico, deve-se utilizar o comando hold (ou hold on) de forma a fazer com que a escala do próximo gráfico se adapte à escala do gráfico atual. Continuando o exemplo anterior:>> y2=cos(x);>> hold % pode-se utilizar também o comando hold oncurrent plot held % gráfico corrente "travado">> plot(x,y2);

Observe que todas as curvas são traçadas com linha contínua amarela, pois este é o estilo de linha padrão. Note que a semelhança entre as curvas pode ser um problema para sua identificação.

Digitando-se hold novamente (ou digitando hold off ) , o gráfico é liberado sendo que o próximo gráfico a ser traçado irá apagar os já existentes.

8

Page 9: Universidade do Estado de Santa Catarina - UDESC · Web viewNo entanto, por questões de tempo, eles não precisam ser digitados durante a execução dos exercícios. 1.3 Descrição

Laboratório de Automação e Informática Industrial

>> holdcurrent plot released % gráfico corrente "liberado"

Outra forma de traçar mais de uma curva no mesmo gráfico pode ser conforme mostrado a seguir.>> y3=sin(2*x);>> plot(x,y,x,y2,x,y3);

Observe que, deste modo, as curvas são traçadas em cores distintas, facilitando a identificação das mesmas. A ordem das cores apresentadas é a seguinte: amarelo, magenta, ciano, vermelho, verde, azul, branco e preto.

1.4.2 Melhorando a Apresentação dos GráficosUsando o comando plot conforme mostrado anteriormente, podemos diferenciar as curvas pelas

suas cores. No entanto, se a impressora utilizada para impressão dos gráficos for monocromática, é importante que as curvas sejam traçadas em estilos diferentes. No comando plot pode ser especificado que tipo de linha será utilizado e, se necessário, utilizar símbolos para marcar cada valor calculado pelo Matlab, conforme especificado na tabela 1.1.

Tipos de Linha Símbolos Cores de Linha- contínua o com círculos y amarelo (yellow)-- tracejada . com pontos m magenta (magenta): pontilhada x com caracteres x c ciano (cyan)-. traço e ponto + com caracteres + r vermelho (red)

* com caracteres * g verde (green)s quadrado b azul (blue)d diamante w branco (white)v triângulo k preto (black)p estrela com cinco arestash estrela com seis arestas

Tabela 1.1: Especificações extras para o traçado de uma função usando o comando plot.

A forma mais adequada para traçar gráficos com mais de uma curva é mostrado a seguir.>> plot(x,y,'-r') % o gráfico y será traçado com linha contínua vermelha.>> hold % retém a execução do gráfico.>> plot (x,y2,'--b') % o gráfico y2 será traçado com linha tracejada azul.

Ou então usando apenas um comando, conforme exemplificado abaixo.>> plot(x,y,'-r',x,y2,'--b') % o gráfico obtido será idêntico ao anterior.

Para adicionar linhas de grade no gráfico, dar nome aos eixos, além de inserir título no gráfico e mudar o valor das escalas dos eixos, são usados os seguintes comandos: grid insere linhas de grade no gráfico xlabel('Nome do eixo x'); insere o nome do eixo x ylabel('Nome do eixo y'); insere o nome do eixo y title ('título do gráfico'); insere o título do gráfico axis([xmin,xmax,ymin,ymax]); muda as escalas dos eixos x e y text(posição no eixo x,posição no eixo y,'Texto'); insere um texto dentro do gráfico

9

Page 10: Universidade do Estado de Santa Catarina - UDESC · Web viewNo entanto, por questões de tempo, eles não precisam ser digitados durante a execução dos exercícios. 1.3 Descrição

Laboratório de Automação e Informática Industrial

legend('Texto 1', 'Texto 2', n); insere a legenda no gráfico

No comando legend o valor de n refere-se a posição da legenda, e pode assumir os valores –1 (fora do gráfico), 0 (dentro do gráfico no melhor local possível), 1 (na parte superior direita do gráfico), 2 (na parte superior esquerda do gráfico), 3 (na parte inferior esquerda do gráfico) e 4 (na parte inferior direita do gráfico). Quando o valor de n não é inserido, 1 é o default do programa.

O comando "text" possui o inconveniente de, uma vez colocado o texto, não pode mais ser removido. Existe também um comando "gtext" com o qual a escolha da localização do texto é feita com auxílio do mouse. No entanto, estes comandos normalmente podem ser substituídos pelo comando "legend", sendo então pouco utilizados.

>> grid % insere linhas de grade no gráfico>> xlabel ('x') % insere o nome do eixo x>> ylabel ('y = f(x)') % insere o nome do eixo y>> title ('Exercício') % insere o título do gráfico>> axis([-10,10,-1.1,1.1]) % muda as escalas dos eixos x e y>> legend('-r','sen(x)','--b','cos (x)') % insere legenda no gráfico

Obs.: A legenda pode ser movida com o auxílio do mouse, arrastando a mesma para a posição desejada.

O comando subplot(abc) irá possibilitar a criação de axb gráficos, sendo c a referência ao cº

gráfico. Subplot(121) e subplot(122) referenciam dois gráficos colocados lado a lado. Para retornar a condição de um gráfico apenas na tela, digitar o comando subplot(111).

Exemplo: Visualização de sinais com pequena amplitude quando plotados junto com sinais de grande amplitude.

%ripple.m%cria gráficos que ilustram a remoção de pequenos sinais do gráfico.clfvwithripple = [100 * ones(1,20) zeros(1,20)] + 0.1 * sin(1:40);plot (vwithripple)subplot(121),plot(vwithripple(1:20)subplot(122),plot((21:40),vwithripple(21:40))

1.4.3 Lendo as Coordenadas em um GráficoA leitura das coordenadas (x,y) de um gráfico pode ser obtida através do comando crsshair . Este

comando não faz parte do Matlab e foi obtido, via Internet, no endereço colocado no final desta apostila. Uma vez que este comando não faz parte do Matlab, para que ele possa ser usado é necessário que seja instalado separadamente. Para tal, basta copiar o arquivo denominado crsshair.m para o diretório de trabalho do Matlab no computador a ser utilizado.

>> crsshair

Quando duas ou mais curvas são traçadas no mesmo gráfico, a escolha de qual das curvas deseja-se medir as coordenadas é feita através de uma pequena janela que surge no canto inferior direito da figura, denotada por "crsshairs on", onde escolhe-se uma das curvas: "trace 1" "trace 2" ...

Uma observação muito importante a respeito do comando crsshair, é que ao final de uma medição de coordenadas, antes de se traçar uma nova curva sobre o gráfico, é indispensável que o comando seja finalizado, evitando assim que ocorram erros. O crsshair também não pode ser usado simultaneamente em dois gráficos distintos, sendo necessário finalizar sua utilização em um gráfico para que seja utilizado em outro. Para finalizar a utilização do crsshair, basta selecionar o botão denotado por "done" colocado no canto inferior direito da figura analisada.

10

Page 11: Universidade do Estado de Santa Catarina - UDESC · Web viewNo entanto, por questões de tempo, eles não precisam ser digitados durante a execução dos exercícios. 1.3 Descrição

Laboratório de Automação e Informática Industrial

Obs.: Para traçar um novo gráfico, mantendo intacto o gráfico existente, devemos criar uma nova figura. Para tal, devemos usar a opção "File" - "New Figure" existente no menu do Matlab. Os gráficos serão traçados na nova figura enquanto ela não for “fechada”.

1.4.4 Gráficos de HastesGráficos de hastes podem ser obtidos com o comando stem. Veja o exemplo:

» y=randn(50,1); % cria dados aleatórios» stem(y); % cria um gráfico de hastes» title('Grafico de Hastes de Dados Aleatórios’);

Esse tipo de gráfico é útil na representação de variáveis de tempo discreto.

1.4.5 Gráficos de BarrasGráficos de barras podem ser obtidos com o comando bar. Veja o exemplo:

» x=-2.9:0.2:2.9; % especifica as divisões a serem usadas» y=exp(-x.*x); % obtêm y = e-x.x

» bar(x,y); % cria o gráfico de barras » title('Grafico de Barras de uma Curva Normal’);

1.4.6 HistogramasHistogramas podem ser obtidos com o comando hist. Veja o exemplo:

» x=-2.9:0.2:2.9; % especifica as divisões a serem usadas» y=randn(5000,1); % cria 5000 pontos aleatórios» hist(y,x); % cria o histograma de y nos valores definidos por x» title(‘Histograma de Dados Aleatórios’);

1.4.7 Gráficos TridimensionaisO Matlab apresenta gráficos tridimensionais através de três comandos diferentes:

plot3 análogo ao comando plot, plota linhas no espaço tridimensionalcontour plota curvas de nível de uma função de duas variáveismesh plota malhas de uma função de duas variávei

Exemplos:

t=0:pi/50:10*pi;plot3(sin(t),cos(t),t)title(‘Helice’),xlabel(‘sen(t)’),ylabel(‘cos(t)’),zlabel(‘t’)

% simple3d.m% Cria um gráfico de linhas de contorno de uma função quadrática no lado esquerdo da tela% e um gráfico em malha da mesma função no lado direito da tela.clfx = [-1:0.1:1];

11

Page 12: Universidade do Estado de Santa Catarina - UDESC · Web viewNo entanto, por questões de tempo, eles não precisam ser digitados durante a execução dos exercícios. 1.3 Descrição

Laboratório de Automação e Informática Industrial

y = [-2:0.1:2];[X,Y] = meshgrid(x,y);z = X.^4 + (Y/2).^4;subplot(121), contour(z) subplot(122), mesh(z)

Obs.: A expressão que é plotada é z = x4 + (y/2)4. O eixo vertical é z. Os eixos do plano horizontal são x e y.

O comando meshgrid toma os vetores x e y e cria a matriz X e a matriz Y usados na obtenção de z. Cada coluna de X é igual a x e o número de colunas de X é igual ao tamanho de y. Cada coluna de Y é igual a y e o número de colunas de Y é igual ao tamanho de x.

Salvo menção em contrário, o Matlab assume que os eixos horizontais são os índices dos elementos da matriz z. Para mudar, substituir o comando mesh(z) por mesh(x,y,z) e contour(z) por contour(x,y,z,10) na função simple3d.m . O número 10 especifica o número de linhas de contorno a serem plotadas.

1.4.8 Imprimindo e Copiando GráficosA impressão dos diagramas pode ser feita de duas maneiras: impressão direta do gráfico para a

impressora, ou transportando o gráfico para um editor de texto (Word, LATex, etc.)Para imprimir diretamente o gráfico, clique na caixa do menu do gráfico e selecione o comando

"print". Desta forma o gráfico será impresso usando toda a página. Caso a impressão não esteja da forma desejada, deve-se configurar a impressora no menu "File" - "Printer Setup" na janela do próprio gráfico.

Para copiar um gráfico para um editor de textos devemos escolher antes as opções de cópia. Esta escolha é "File" – "Preferences" – "Copying Options" da figura ou da janela de comando do Matlab, como mostrado na figura 1.1. Nesta janela escolhe-se inicialmente o tipo de figura:

Windows Metafile Windows Bitmap

Cada uma das opções tem as suas vantagens e desvantagens, sendo que a principal vantagem de uma figura tipo Metafile é que ela ocupa menos espaço que uma do tipo Bitmap (quase a metade). Por outro lado, uma figura do tipo Metafile pode ser distorcida quando, após colada no editor de textos, seu tamanho é modificado somente num dos sentidos (horizontal ou vertical). Já uma figura do tipo Bitmap preserva suas características mesmo quando suas dimensões são completamente alteradas dentro do editor de textos. Outra característica importante que difere os dois formatos de figura, é que a indicação dos valores das coordenadas, obtida através do comando crsshair, será transportada para o editor de textos somente se a figura for do tipo Bitmap.

Figura 1.1: Janela de opções de cópia de figuras

12

Page 13: Universidade do Estado de Santa Catarina - UDESC · Web viewNo entanto, por questões de tempo, eles não precisam ser digitados durante a execução dos exercícios. 1.3 Descrição

Laboratório de Automação e Informática Industrial

Escolhendo-se a opção Metafile são habilitados duas outras opções de cópia, conforme mostrado na figura 1.1 e comentadas abaixo.

Honor figure size properties: quando esta opção é marcada a cópia é feita baseada nos tamanhos pré-definidos de figura; se esta opção não for marcada a cópia será feita preservando as proporções reais da figura, conforme a mesma é vista na tela do computador. Aconselha-se não marcar este item.

White background: selecione esta opção para copiar a figura com fundo branco, retirando então a moldura existente na mesma. Aconselha-se marcar esta opção.

Obs.: Note que escolhendo-se a opção "Bitmap" estas duas opções são desabilitadas.

Após selecionar as opções de cópia, selecione a opção "copy Figure" no menu "edit" do gráfico para copiar o gráfico no Matlab e depois use o comando "editar" - "colar especial" no Word. É importante salientar aqui que dependendo das opções de cópia surgirão opções diferentes no momento de colar a figura no word, conforme explicado a seguir.

Se foi utilizada a opção Metafile na cópia da figura, devemos escolher a opção "colar como figura" (aconselha-se não usar a opção "flutuar sobre texto") no momento de colar a figura no word.

No entanto, se a opção de cópia foi de Bitmap, deve-se escolher a opção “colar como bitmap” (aconselha-se não usar a opção "flutuar sobre texto").

Uma vez colado no Word, pode-se ajustar o tamanho do gráfico clicando uma vez em cima deste e redefinindo o tamanho com o auxílio do mouse.

Obs.: De uma forma geral, aconselha-se utilizar a opção de cópia como sendo padrão bitmap.

1.5 Usando o Help on LineO Help on Line do Matlab deve ser usado para obter informações sobre os comandos, funções

operadores e toolboxes que compõem o Matlab. Digitando-se help, o Matlab apresenta uma lista de pacotes de comandos e toolboxes. Para obter

informações sobre um pacote ou comando pertencente ao pacote, digite help + nome do tópico que se deseja aprender.

>> help % lista os pacotes de comandos e toolboxes>> help plotxy % lista os comandos do pacote gráfico plotxy >> help plot % lista as instruções do comando plot>> help control % lista as instruções da toolbox control

O comando helpwin apresenta os tópicos de ajuda numa janela fora da janela de comando do Matlab. Este comando é útil quando não se quer misturar o trabalho feito na janela de comando com o texto do tópico de ajuda. Assim, para obter o mesmo texto de ajuda do comando plot em uma janela separada digite:

>> helpwin plot

Outra maneira de se fazer busca de instruções no Matlab é através do comando lookfor, que faz uma busca na primeira linha das instruções, retornando aquelas que contém uma palavra-chave especificada.

» lookfor sumCUMSUM Cumulative sum of the elements.SUM Sum of the elements.DBCONT Resume execution from the current breakpoint.TRACE Sum of diagonal elements.SUMPROD is the M-file description of the SIMULINK system named SUMPROD

13

Page 14: Universidade do Estado de Santa Catarina - UDESC · Web viewNo entanto, por questões de tempo, eles não precisam ser digitados durante a execução dos exercícios. 1.3 Descrição

Laboratório de Automação e Informática Industrial

1.6 Salvando e Recuperando VariáveisPara salvar os valores das variáveis usadas numa sessão do Matlab para que possam ser utilizadas

em outro momento, utiliza-se o comando Save. Este comando salva todas as variáveis geradas pelo usuário num arquivo matlab.mat no diretório de trabalho do Matlab. É conveniente, entretanto, que o nome deste arquivo e o diretório a ser colocado tal arquivo sejam modificados, salvando o arquivo num diretório pessoal e com o nome desejado, conforme mostrado a seguir.>> save g:\exp1\teste % o nome do arquivo será teste.mat e ele será gravado no diretório g:\exp1

Obs.: Este comando salva apenas os valores das variáveis definidas numa sessão, não salvando gráficos, ou qualquer outro tipo de procedimento adotado no Matlab.

Tendo salvado as variáveis neste arquivo, podemos fechar o Matlab e, numa próxima utilização, podemos recuperar os valores destas variáveis usando o comando load, conforme mostrado a seguir.

>> load g:\exp1\teste % é necessário informar todo o caminho onde se encontra o arquivo

Ob.: Para maiores detalhes a respeito destes comandos, consulte o help do Matlab.

Existem ainda outros comandos que permitem trabalhar com as variáveis utilizadas.Os comandos who e whos fornecem uma lista das variáveis correntes. Um atalho para o

comando whos é o botão . O comando clear limpa as variáveis.

1.7 Programando no MATLAB – uma introduçãoArquivos ASCII, criados pelo usuário, contendo comandos da linguagem MATLAB, são

chamados de M-files. M-files podem ser scripts, que apenas executam uma série de declarações do MATLAB, ou funções, que aceitam argumentos e constituem sub-rotinas. Para que um arquivo seja reconhecido pelo MATLAB como um M-file, seu nome deve ter a extensão “.m”.

Script M-files Function M-files Não usam argumentos de entrada. Podem usar argumentos de entrada. Variáveis globais, ou seja, são as mesmas

da janela de comando do Matlab. As variáveis internas são locais para a

função. Útil para automatizar uma serie de passos

que se necessita repetir varias vezes. Útil para acrescentar novos comandos

ao Matlab. Tabela 1.2: Tipos de M-files.

Para escrever um M-file deve-se escolher a opção "New" – "M-File" no menu do Matlab, ou usar

o botão de atalho . Desta forma, o programa Editor/Debugger será aberto, onde os comandos devem ser digitados, como se estivéssemos usando o Matlab. O salvamento de um M-file gerado no Editor/Debugger segue o padrão do Windows com extensão “.m”.

1.7.1 Criando Script FilesVamos criar um Script M-file como exemplo. Digite os comandos mostrados a na figura 1.2, na

janela do Editor/Debugger e salve o arquivo com o nome media.

14

Page 15: Universidade do Estado de Santa Catarina - UDESC · Web viewNo entanto, por questões de tempo, eles não precisam ser digitados durante a execução dos exercícios. 1.3 Descrição

Laboratório de Automação e Informática Industrial

Figura1.2: O Editor/Debugger do Matlab

Os comentários inseridos no arquivo servem para auxiliar os usuários que não sabem utilizar tal arquivo. O comando help, associado com o nome da M-file, apresentará os comentários introduzidos. Experimente digitar o comando abaixo e veja o resultado.

>> help media

Uma propriedade muito importante de um Script M-File é que suas variáveis são globais, o que implica na necessidade de que as variáveis sejam declaradas no Matlab e que elas tenham os mesmos nomes preestabelecidos internamente no arquivo. Note que se no exemplo anterior for usado um nome diferente para a variável P, fazendo T=[1 3 5] por exemplo, não é possível obter o resultado, pois internamente a variável T não é utilizada e a variável P não foi declarada.

>> T=[0 1 3];>> media ??? Undefined function or variable P.

Conforme explicado acima, é necessário que na declaração das variáveis sejam utilizado os mesmos nomes internos ao arquivo. Desta forma tem-se:

>> P=[0 1 3];>> media resp = 1.3333

Como visto, para executar um arquivo script M-File, basta digitar seu nome na janela de comandos do Matlab.

1.7.2 Criando FunçõesNovas funções podem ser adicionadas ao vocabulário do Matlab se elas forem expressas em termos

de outras funções existentes. A principal diferença entre uma função e um script file é que num script file as variáveis são globais e numa função as variáveis são locais. O fato das variáveis serem globais num script file, implica na necessidade de que as variáveis sejam declaradas no Matlab e que elas tenham os mesmos nomes preestabelecidos internamente no arquivo. Numa função, entretanto, como as variáveis são locais, pode-se passar diretamente os parâmetros para a função, sem a declaração de variáveis, economizando assim o uso de variáveis.

A primeira linha da função começa com a palavra “function” seguida de uma sentença

15

Page 16: Universidade do Estado de Santa Catarina - UDESC · Web viewNo entanto, por questões de tempo, eles não precisam ser digitados durante a execução dos exercícios. 1.3 Descrição

Laboratório de Automação e Informática Industrial

identificando o nome da função e os argumentos de entrada e saída, conforme mostrado a seguir.

function[argumentos de saída] = nome da função [argumentos de entrada]

Obs.: Se não houverem argumentos de saída, basta suprimi-los juntamente com o sinal de igualdade.

Vamos fazer o mesmo exemplo anterior, mas agora usando uma função em vez de script file. Usando o Editor/Debugger, digite o programa abaixo:

function m = mediaf(P)%% P deve ser um vetor que contém os valores % entre os quais se deseja saber a média.%% mediaf(P) retorna a média entre estes valores. %% Exemplo: mediaf([0 1 3])% ans=1.3333%n=length(P);m=sum(P)/n;

Salve o arquivo com o mesmo nome definido internamente (mediaf.m) e execute-o no Matlab, digitando o comando abaixo.>> mediaf([0 1 3]) ans = 1.3333

Observe que neste caso não foi necessário declarar o vetor P. No entanto, se for desejado fazer uma declaração do vetor de entrada, não há necessidade de usar o mesmo nome da variável definida internamente no arquivo, conforme mostrado a seguir.>> Z=[8 9 10];>> mediaf(Z) ans = 9.0000

No exemplo acima o vetor foi declarado no Matlab com nome Z, e embora a função não utilize esse nome, ela entende que o vetor fornecido consiste no argumento de entrada esperado, ou seja, na variável P.

1.7.3 Comandos de ProgramaçãoQuando programamos script files ou functions, normalmente precisamos de comandos

relacionados com entrada e saída de variáveis e comandos de fluxo de programação.

Comando Operaçãoecho Apresenta cada comando do arquivo na tela quando ele é executadopause Força o programa a parar até que se pressione uma teclakeyboard Pára o programa e permite ao usuário entrar com uma série de comandos até

que se entre com o comando return input Permite ao programa solicitar dados do usuáriodisp Coloca na tela uma matriz como texto, sem o seu nome

16

Page 17: Universidade do Estado de Santa Catarina - UDESC · Web viewNo entanto, por questões de tempo, eles não precisam ser digitados durante a execução dos exercícios. 1.3 Descrição

Laboratório de Automação e Informática Industrial

>> x=input('Entre com o valor de x, x='); o usuário deve entrar com valor de x

Entre com o valor de x; x=345

x =

345

>> disp('Calculo feito com sucesso')

Calculo feito com sucesso

Estruturas if-elseif-else-end

If (Expressão Relacional 1) Comandos a serem executados se a Expressão Relacional 1 for verdadeiraElseif (Expressão Relacional 2) Comandos a serem executados se a Expressão Relacional 2 for verdadeira...

Elseif (Expressão Relacional n) Comandos a serem executados se a Expressão Relacional n for verdadeiraElse Comandos a serem executados se nenhuma outra Expressão Relacional for verdadeiraend

Estruturas for-end

>>for n=1:5; for m=5:-1:1; A(n,m)=n^2+m^2; end; disp(n);end 1 2 3 4 5>>AA = 2 5 10 17 26 5 8 13 20 29 10 13 18 25 34 17 20 25 32 41 26 29 34 41 50

Estruturas While-end

>> num=0;EPS=1;>> while (1+EPS)>1 EPS=EPS/2; num=num+1; endnumnum = 53» EPS = 2*EPS EPS = 2.2204e-016

Comando Operaçãobreak Termina a execução de loops for e whileerror Retorna o controle para o teclado e apresenta na tela uma mensagem de erronargin Apresenta o número de argumentos de entrada de uma functionnargout Apresenta o número de argumentos de saída de uma function

17

Page 18: Universidade do Estado de Santa Catarina - UDESC · Web viewNo entanto, por questões de tempo, eles não precisam ser digitados durante a execução dos exercícios. 1.3 Descrição

Laboratório de Automação e Informática Industrial

If nargin ~= 2) Error (‘Número de parâmetros de entrada incorreto’)end

1.8 Definindo os Caminhos de Procura de Arquivos do MatlabÉ importante ressaltar que os arquivos de usuários devem ser salvos num diretório que esteja no

caminho de procura do Matlab, ou seja, no seu Matlab Path. Uma maneira de se visualizar os diretórios que o Matlab procura para executar os arquivos do tipo M-file é através do menu “File – Set Path” na

janela de comandos do Matlab, ou através do botão . Assim teremos a janela da Figura 1.3.

Figura 1.3: Janela do Matlab Path.

Podemos adicionar caminhos (paths) para que o Matlab procure por arquivos do tipo M-file

clicando no botão .

De modo muito semelhante ao utilizado no sistema operacional DOS, para se verificar o diretório corrente ou mudar de diretório no Matlab, utiliza-se os seguintes comandos:>> cd % mostra o atual diretório de trabalho>> dir % lista os arquivos existentes no diretório atual>> cd \ % muda para o diretório raiz (deixar espaço após o comando cd)>> cd g:\exp1 % muda para o diretório g:\exp1 (se o mesmo existir)

É importante salientar que entre o comando cd e a especificação do diretório é necessário que se deixe um espaço, ou seja, cd_g:\...

18

Page 19: Universidade do Estado de Santa Catarina - UDESC · Web viewNo entanto, por questões de tempo, eles não precisam ser digitados durante a execução dos exercícios. 1.3 Descrição

Laboratório de Automação e Informática Industrial

1.9 Exercícios

Exercício 1 - Obtenha as raízes dos seguintes polinômios.a) b)

Exercício 2 - Obtenha os polinômios que possuem as seguintes raízes.a) b)

Exercício 3 - Obtenha os polinômios resultantes das seguintes operações.

a) b)

Obs.: Nas operações com divisão, mostre tanto o quociente como o resto obtido na operação.

Exercício 4 - Traçar em um mesmo gráfico as funções e . Considere uma variação de x entre [-10,10] com intervalos de 0.01. Utilize os recursos do software para diferenciar as curvas em cor e tipo de linha e inserindo legenda, título e o nome dos eixos.

Dica: Note que x é um vetor e portanto não é possível obter a operação matemática x2. Este é um caso típico onde deve-se usar operações com conjuntos. A variável y1 será criada como:

>> y1=x.^2; % observe que foi utilizado um ponto logo após a variável x

Exercício 5 - Obtenha, num mesmo gráfico, as curvas de resposta das funções y1=sen(t) e y2=sen(2t+ /4) e utilize o comando crsshair para verificar o período de cada um dos sinais, bem como a defasagem existente entre os mesmos. Considere que t varia de 0 à 4. Não esqueça de usar os recursos do software para diferenciar as curvas e colocar título e nome nos eixos, além da legenda. É necessário mostrar apenas um gráfico, o qual deve conter as duas curvas traçadas bem como uma indicação gráfica de como foi obtido o período de uma das senóides através do comando crsshair.Obs.: Não serão aceitos gráficos que não tenham um comportamento senoidal "suave" conforme

esperado.

Exercício 6 - Crie um arquivo script file (M-File) que trace três curvas no mesmo gráfico. Este arquivo deve ainda fazer com que o gráfico tenha fundo branco, grid, e nome na escala x como sendo "Tempo (s)" e na escala y como sendo "Amplitude". Note que a faixa de variação de valores para o eixo das abscissas bem como as funções que serão usadas para obter os gráficos devem ser fornecidas externamente no momento de uso do M-File, não podendo ser definidas internamente no arquivo.

Exercício 7 - Crie uma função que calcule a média semestral para a disciplina de ASL, considerando que são fornecidas as notas das quatro provas e a média do laboratório. Esta função deve retornar a média do aluno juntamente com o resultado "Aprovado" ou "Exame". Caso o aluno não seja aprovado, deve fornecer ainda a nota necessária no exame para obter aprovação.

Exercício 8 - Considere: A

5 1 00 2 10 0 1

, b

001

, c 1 1 0

a) Suponha Ax = b. Encontre x.b) Suponha yA = C. Encontre y.

19

Page 20: Universidade do Estado de Santa Catarina - UDESC · Web viewNo entanto, por questões de tempo, eles não precisam ser digitados durante a execução dos exercícios. 1.3 Descrição

Laboratório de Automação e Informática Industrial

c) G s s( ) ( ) c I A b1 . Encontre G(0) e G(1)d) Defina CM b Ab A b2 . Encontre o rank de CM

e) Considere uma matriz A (n x n) arbitrária e o vetor b (n x 1). Seja CM

n b Ab A b .. . A b2 1 . Escreva um script file que compute o rank de CM.

Exercício 9 - Considere a função: H sn sd s

( )( )( )

onde n s s s s( ) , , , 3 26 4 11 29 6 76 e

d s s s s s( ) 4 3 214 46 64 40

a) Encontre u(-12), u(-10), u(-8). Encontre d(-12), d(-10), d(-8)b) Encontre H(-12), H(-10), H(-8)c) Agora considere s = a + bi, onde a e b são inteiros e 15 0a e 2 2b . Gere uma matriz S

(16 x 5) de todos os possíveis valores de s. Por exemplo, S(1,1) deveria ser igual a -15-2i, S(1,2) deveria ser igual a -15-i, etc.

d) Encontre H(s) para todos os valores de s considerados em c) pela computação de operações vetoriais na matriz S.

e) Para quais valores de s considerados em c), H(s) = 0 ?f) Suponha a e b não necessariamente inteiros. Encontre todos os valores de s para os quais H(s) = 0.

g) Seja C ss ss s

( )

2

2

2 26 10

. Para quais valores de s tem-se C(s)H(s) = 0 ?

Exercício 10 - Faça A1 ser uma matriz qualquer n x m e A2 uma matriz qualquer p x q. Crie uma função bloco(A1, A2) que gera uma matriz diagonal bloco (n + p) x (m + q).

A1A20

0

onde os blocos da diagonal “off” tem todos os elementos iguais a zero. Use o comando zeros.

Exercício 11 - Crie a função range1(p) que retorna a diferença entre os elementos maiores e menores no vetor p. Use as senteças for e if. Crie também a função range2(p) que retorna o mesmo resultado mas use while eif. Qual é o mais eficiente, range1 ou range2 ? Modifique range1 e range2 para que p possa ser uma matriz.

20