Anda di halaman 1dari 20

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.
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 Matlab


Matrix 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 1a
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
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.
Laboratório de Automação e Informática Industrial

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ásicas
Ao 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.


>> b
b=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
/ 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

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

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 Predefinidas


O Matlab possui variáveis predefinidas que são apresentadas a seguir:
· i e j = -1 (se usar i e j, limpar após o uso com o comando clear)
· pi = p (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ômios
Um 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)


>>polyval (P,1)
ans =
15
Para obter as raízes de um polinômio qualquer procede-se da seguinte forma:
>> R=roots(P)
3
Laboratório de Automação e Informática Industrial

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 Matrizes


Da 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:
>> A= [1 2; 3 4]
A=
1 2
3 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
4
Laboratório de Automação e Informática Industrial

ú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 2
3 5
>> A(3,3)=6 %adiciona um elemento a matriz existente.
A=
1 2 0
3 5 0
0 0 6

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

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


A=
1 2 0
3 5 0
0 0 6
7 8 9

>> B = A(2:3,1:3)
B=
3 5 0
0 0 6

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


B=
5 0
0 6
>> D = diag([1 2]) %cria uma matriz diagonal com os elementos de entrada
D=
1 0
0 2

>> eye(4) %cria uma matriz identidade


ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1

>> ones(2,3) % cria uma matriz toda de uns


ans =
1 1 1
1 1 1

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


ans =
0 0 0 0

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

1.3.5 Operações com Matrizes


Adição:
>> B + D
ans =
6 0
0 8
Multiplicação:
>> B * D
ans =
5 0
0 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 Y
ans =
1 3 5
2 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.*S
ans =
8 15
0 6

1.3.6 Operadores Relacionais


Os operadores relacionais no MATLAB incluem todas as comparações habituais:
< Menor que
<= 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
6
Laboratório de Automação e Informática Industrial

comparar um conjunto a um escalar


>> v = R < S
v =
0 0
1 1
>> v = R > 4
v =
0 1
0 0

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


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

>> sin(x)./ x
Warning: Divide by zero
ans =
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-16


x=
-1.0000 -0.6667 -0.3333 0.0000 0.3333 0.6667 1.0000

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

1.3.7 Operadores Lógicos


Os operadores lógicos permitem combinar ou negar expressões relacionais. São eles:

& E
| Ou
~ Não
xor(x,y) Ou exclusivo
any(x,y) Retorna 1 para cada coluna não nula da matriz x
all(x,y) Retorna 1 para cada coluna da matriz x com todos os elementos não nulos
isnan(x) Retorna 1 para os NAN de x
isinf(x) Retorna 1 para os Inf de x
finite(x) Retorna 1 para os valores finitos de x

>> v = R & S
v =
1 1
0 1
>> v = ~v
v =
0 0
1 0

1.4 Gráficos no Matlab


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

O 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áficos


Grá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 linhas
clf % limpa a janela do gráfico
H = hilb(5) % cria uma matriz de Hilbert 5x5
plot (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 on
current 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.
>> hold
current 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);

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

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áficos


Usando 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 arestas
h 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
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.

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

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.
clf
vwithripple = [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áfico


A 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.

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”.

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

1.4.4 Gráficos de Hastes


Grá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 Barras


Grá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 Histogramas
Histogramas 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 Tridimensionais


O Matlab apresenta gráficos tridimensionais através de três comandos diferentes:

plot3 análogo ao comando plot, plota linhas no espaço tridimensional


contour plota curvas de nível de uma função de duas variáveis
mesh 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.
clf
x = [-1:0.1:1];
y = [-2:0.1:2];
[X,Y] = meshgrid(x,y);
z = X.^4 + (Y/2).^4;
subplot(121), contour(z)
subplot(122), mesh(z)

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

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áficos


A 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


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.
q 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.
12
Laboratório de Automação e Informática Industrial

q 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 Line


O 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 sum
CUMSUM 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

1.6 Salvando e Recuperando Variáveis


Para 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
13
Laboratório de Automação e Informática Industrial

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ção


Arquivos 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 Ø As variáveis internas são locais para a
da janela de comando do Matlab. função.
Ø Útil para automatizar uma serie de passos Ø Útil para acrescentar novos comandos
que se necessita repetir varias vezes. 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 Files


Vamos 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
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ções


Novas 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
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ção


Quando 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ção
echo Apresenta cada comando do arquivo na tela quando ele é executado
pause Força o programa a parar até que se pressione uma tecla
keyboard 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ário
disp Coloca na tela uma matriz como texto, sem o seu nome

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

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

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 verdadeira
Elseif (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 verdadeira
Else
Comandos a serem executados se nenhuma outra Expressão Relacional for verdadeira
end

· 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
>>A
A =
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;
end
num
num =
53
» EPS = 2*EPS
EPS =
2.2204e-016

Comando Operação
break Termina a execução de loops for e while
error Retorna o controle para o teclado e apresenta na tela uma mensagem de erro
nargin Apresenta o número de argumentos de entrada de uma function
nargout Apresenta o número de argumentos de saída de uma function

If nargin ~= 2)
Error (‘Número de parâmetros de entrada incorreto’)
end
17
Laboratório de Automação e Informática Industrial

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:\...

1.9 Exercícios

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


a) s 2 + 4 s + 5 = 0 b) s 3 + 6 s 2 + 25s + 8 = 0

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

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


a) s = -2 ± j 2 b) s1 = -10 e s2 = -1 ± j 2

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

a) ( s 2 + 5) * ( s + 2) /( s + 1) b) ( s + 1) * ( s + 2) * ( s + 3) * ( s + 4)
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 y1 = x 2 e y 2 = 25 x . 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 y 1 =sen(t) e
y 2 =sen(2t+p/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 à 4p. 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.

é- 5 1 0ù é 0ù
ê ú ê ú
Exercício 8 - Considere: A = ê 0 - 2 1ú , b = ê 0ú , c = - 1 1 0 [ ]
êë 0 0 1úû êë1úû

a) Suponha Ax = b. Encontre x.
b) Suponha yA = C. Encontre y.
c) G ( s) = c( sI - A ) -1 b . Encontre G(0) e G(1)
d) Defina C M = b [ ]
Ab A 2 b . Encontre o rank de CM
19
Laboratório de Automação e Informática Industrial

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


[
C M = b Ab A b ... A 2 n -1
]
b . Escreva um script file que compute o rank de CM.

n( s )
Exercício 9 - Considere a função: H ( s) = onde n( s) = s 3 + 6,4 s 2 + 11,29 s + 6,76 e
d ( s)
d ( s) = s 4 + 14 s 3 + 46s 2 + 64 s + 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 £ a £ 0 e - 2 £ b £ 2 . 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.
s 2 + 2s + 2
g) Seja C ( s) = 2 . Para quais valores de s tem-se C(s)H(s) = 0 ?
s + 6s + 10

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).
é A1 0 ù
ê 0 A2ú
ë û
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