Curso Básico de MatLab

Curso Básico de MatLab

(Parte 1 de 3)

Apostila Básica do Software Matlab

André Luís Dalcastagnê Florianópolis, agosto de 2008

O Matlab é um software criado pela Mathworks em 1984 destinado à análise e modelagem de sistemas e algoritmos. Devido à sua praticidade, essa poderosa ferramenta computacional vem sendo utilizada tanto em universidades quanto em empresas do mundo todo.

Em relação a uma linguagem de programação tradicional (como C/C++ ou

Fortran), o desenvolvimento de algoritmos no ambiente Matlab é sem dúvida mais fácil e rápido. A desvantagem é que utilizando uma linguagem de programação tradicional é possível desenvolver algoritmos mais eficientes.

O objetivo deste curso é fornecer a base necessária para desenvolver programas no ambiente Matlab. Devido à grande quantidade de funções disponibilizadas pelo Matlab, é impossível aprender todo o seu conteúdo em um único curso. Entretanto, o aluno será capaz de entender como o Matlab funciona e descobrir quais funções são úteis para as suas aplicações.

1 Introdução ao Matlab

O Matlab (Matrix Laboratory) pode ser definido como um ambiente de computação numérica baseado em matrizes. Dentre as suas principais características, destacam-se:

• gráficos e visualização de dados;

• linguagem de programação de alto nível;

• toolboxes, que oferecem funcionalidades específicas por área de aplicação. Como exemplos de toolboxes, podem-se citar:

• Optimization, Statistics, Financial;

• Fuzzy Logic, Neural Networks, Control System;

• Signal Processing, System Identification. A estrutura de diretórios do Matlab é a seguinte:

• diretório base: c:\matlab;

• executáveis: c:\matlab\bin;

• diretório de trabalho: c:\Matlab\work.

1.1 Ambiente Matlab a) Área de trabalho A área de trabalho do Matlab apresenta duas partes principais:

• Command Window: área na qual os dados e instruções são digitados e os resultados são apresentados;

• Workspace: área de memória de trabalho do Matlab, na qual todas as variáveis são armazenadas.

Como exemplo, digite no Command Window a instrução “ver”. Como resultado, o usuário recebe as informações acerca das versões do Matlab, do Simulink e de todos os toolboxes instalados no computador. O sinal de prompt “>>” dessa janela indica que o sistema está apto a receber comandos.

MATLAB ToolboxVersion 6.0 (R12) 06-Oct-2000
SimulinkVersion 4.0 (R12) 16-Jun-2000
StateflowVersion 4.0 (R12) 04-Oct-2000
Stateflow CoderVersion 4.0 (R12) 04-Oct-2000
Communications BlocksetVersion 2.0 (R12) 01-Sep-2000
Communications ToolboxVersion 2.0 (R12) 01-Sep-2000
Control System ToolboxVersion 5.0 (R12) 01-Sep-2000
DSP BlocksetVersion 4.0 (R12) 01-Sep-2000
Filter Design ToolboxVersion 2.0 (R12) 01-Aug-2000
Fixed-Point BlocksetVersion 3.0 (R12) 26-May-2000
Image Processing ToolboxVersion 2.2.2 (R12) 10-Mar-2000
MATLAB CompilerVersion 2.1 (R12) 26-Jul-2000
Model Predictive Control ToolboxVersion 1.0.5 (R12) 10-May-2000
Nonlinear Control Design BlocksetVersion 1.1.4 (R12) 12-Jun-2000
Optimization ToolboxVersion 2.1 (R12) 07-Jun-2000
Partial Differential Equation ToolboxVersion 1.0.3 (R12) 31-Dec-1999
Robust Control ToolboxVersion 2.0.7 (R12) 10-May-2000
SB2SL (converts SystemBuild to SimuVersion 2.1 (R12) 16-Jun-2000
Signal Processing ToolboxVersion 5.0 (R12) 01-Jun-2000
Simulink AcceleratorVersion 1.0 (R12) 01-Mar-2000
Model Differencing for Simulink andVersion 1.0 (R12) 19-Jul-2000
Simulink Model Coverage ToolVersion 1.0 (R12) 02-Jun-2000
Simulink Report GeneratorVersion 1.1 (R12) 01-Apr-2000
Statistics ToolboxVersion 3.0 (R12) 01-Sep-2000
Symbolic Math ToolboxVersion 2.1.2 (R12) 1-Sep-2000
System Identification ToolboxVersion 5.0 (R12) 27-Aug-2000
Wavelet ToolboxVersion 2.0 (R12) 16-Jun-2000

>> ver -------------------------------------------------- MATLAB Version 6.0.0.8 (R12) on PCWIN MATLAB License Number: 0 -------------------------------------------------- b) Janelas A versão Matlab para ambiente Windows apresenta as seguintes janelas:

• Command Window: ambiente de trabalho;

• Launch Pad: apresenta informações, textos explicativos e exemplos dos produtos instalados;

• Workspace: apresenta as variáveis do ambiente de trabalho;

• Command History: histórico das instruções já executadas.

c) Menus

O Matlab também possui uma série de menus: File, Edit, View, Web, Window e

Help. Os mais importantes serão vistos ao longo do curso. Alguns menus são bastante utilizados:

• File: manipulação de arquivos; o File/Set Path: configura a lista de diretórios de busca (equivalente ao comando “pathtool”); o File/Preferences: configura parâmetros do ambiente Matlab (equivalente ao comando “preferences”);

• Edit: recursos de edição;

• View: configuração de visualização da tela do Matlab;

• Web: aciona web browser;

• Window: fecha janelas de figuras (gráficos);

• Help: aciona textos de ajuda.

d) Barra de ferramentas

A primeira parte da barra de ferramentas do Matlab segue o padrão Windows. As demais opções são próprias do Matlab:

• New M-File, Open, Cut, Copy, Paste, Undo e Redo;

• Simulink: abre um modelo do Simulink;

• Current Directory: apresenta o diretório de trabalho corrente;

• Browse for folder: busca um novo diretório de trabalho.

1.2 Configuração de Parâmetros do Ambiente Matlab

Os parâmetros do Matlab são configuráveis pelo comando “preferences” ou pelo menu “File/Preferences”. As principais opções desse menu são:

• General: parâmetros gerais. o Habilita/desabilita textos explicativos de ícones; o Tipo de impressão desejado.

• Command Window: configura a janela Command Window. o Formato de exibição de números; o Formato de exibição de matrizes; o Cor e tipo de fonte.

• Editor/Debugger: configura o editor de textos do Matlab (edit).

• Help: configurações da ajuda do Matlab.

• Current Directory: configura a opção Current Directory da barra de ferramentas.

• Workspace: configura parâmetros da janela Workspace.

• Array Editor: configura parâmetros da janela Array Editor.

• Guide: configura parâmetros do ambiente de desenvolvimento de interfaces gráficas guide (Graphical User Interface).

• Figure Copy Template: configura parâmetros para cópia de figuras.

• Simulink: configura parâmetros do Simulink.

1.3 Configuração de Diretórios do Matlab

Para que uma função possa ser utilizada por qualquer programa Matlab, o diretório no qual ela está salva deve estar incluído na lista de diretórios de busca do Matlab (arquivo pathdef.m). Para realizar tal tarefa, pode-se utilizar a instrução “pathtoll” ou o menu “File/Set Path” (mais prático). Se isso não for feito, a função criada só poderá ser utilizada por programas Matlab (.m) que estiverem gravados no mesmo diretório da função.

O Matlab possui algumas funções do sistema operacional, apresentados na tabela abaixo.

Tabela 1.1: Comandos do sistema operacional

Comando Função Exemplo cd ou pwd Informa ou altera diretório cd dir ou ls Lista conteúdo do diretório dir what exibe arquivos Matlab salvos no diretório what which Identifica e localiza arquivo which cos ! Chama comando do sistema operacional !del arquivo.m

2 Elementos Básicos do Matlab

2.1 Notações

O Matlab utiliza as seguintes notações para representar um número: Tabela 2.1: Notações adotadas no Matlab número negativo sinal “-“ casa decimal ponto final “.” notação científica “e”

Exemplos:

>> -2.5e-3 ans = -0.0025 >> 1+2j ans = 1.0 + 2.0i

Note que o Matlab atribui o resultado de cada operação a uma variável denominada ans (de answer). Ela é utilizada pelo Matlab para armazenar o último valor calculado pelo Matlab, a não ser nos casos em que o usuário explicita o nome de uma variável juntamente com o comando. Veja o exemplo abaixo.

>> a=-2.5e-3 a = -0.0025 >> b=1+2j b = 1.0 + 2.0i

2.2 Matrizes

Para o Matlab, qualquer valor numérico é interpretado como uma matriz. Uma matriz é definida da seguinte forma:

• valores numéricos são definidos entre colchetes (“[...]”); • elementos de uma linha são separados por “,” ou por espaço em branco;

• final de uma linha é informado por “;”.

Alguns exemplos Tabela 2.2: Tipos de matrizes tipo de matriz exemplo escalar >> 2 ans =

2

vetor linha (1) n×>> [1 2 3] ans =

1 2 3
1
2
3

matriz bidimensional () mn×

1 2 3
4 5 6
7 8 9

>> [1 2 3;4 5 6;7 8 9] ans = matriz de dimensão

2.3 Variáveis

Para criar uma variável no Matlab deve-se seguir algumas regras. Assim, o nome de uma variável Matlab

• deve ser alfanumérico e iniciado por uma letra.

• é case-sensitive;

• pode conter o caractere “_”;

• pode possuir no máximo 32 caracteres;

• não pode ser uma palavra reservada, como “for” ou “while”.

As variáveis criadas no Matlab ficam registradas na região Workspace (ver Capítulo 1). A Tabela 2.3 apresenta alguns comandos para manipular essas variáveis.

Tabela 2.3: Comandos para manipulação de variáveis comando descrição who lista nomes das variáveis do Workspace whos lista os nomes e tipos das variáveis do Workspace clear elimina variáveis do Workspace

>> a = 1; >> b = [1 2; 3 4];

>> texto = 'matlab';

ab texto
NameSize Bytes Class
a1x1 8 double array
b2x2 32 double array
texto1x6 12 char array

>> who Your variables are: >> whos Grand total is 1 elements using 52 bytes >> clear b;

NameSize Bytes Class
a1x1 8 double array
texto1x6 12 char array
atexto

>> whos Grand total is 7 elements using 20 bytes >> who Your variables are: 8

2.4 Funções Matemáticas

O Matlab possui uma série de funções matemáticas (built-in functions). Além dessas funções previamente programadas, o usuário também pode criar funções para atender as suas necessidades. Uma função no Matlab apresenta a seguinte sintaxe:

[saída1, saída2,, saídaN] = NomeFunção [entrada1, entrada2, ... ,entradaM],

onde saída1 a saídaN são os N parâmetros de saída da função; entrada1 a entradaM são os M parâmetros de entrada da função; NomeFunção é o nome da função.

Para obter ajuda em alguma função, pode-se utilizar o comando help NomedaFunção Exemplo

SINSine.
SIN(X) is the sine of the elements of X.
help sym/sin.m

>> help sin Overloaded methods >> x = pi/2;

1.0

>> a = sin(x) a = É interessante notar a função do “;” no Matlab. Na definição da variável “x”, o seu valor não foi apresentado na tela devido à inserção do “;”. Já quando se definiu a variável “a”, o seu valor foi apresentado na tela porque não se colocou o “;” no final da instrução. Em termos numéricos, não há diferença alguma; o sinal “;” serve apenas para informar ao Matlab que não se deseja ver o resultado de uma operação na tela.

3. Manipulação de Matrizes

Como mencionado no Capítulo 2, uma matriz é definida da seguinte forma: • valores numéricos são definidos entre colchetes (“[...]”);

• elementos de uma linha são separados por “,” ou por espaço em branco;

• final de uma linha é informado por “;”.

3.1 Criação de Matrizes a) Matrizes numéricas: formadas por qualquer número ou operação numérica:

-2.80001.4142 1.1250 1.0
0.3894 2.0138 4.0 100.0

>> m = [-2.8 sqrt(2) (5+4)/8 1; sin(0.4) exp(0.7) fix(4.5) 100] m = b) Acrescendo valores em uma matriz: é possível acrescentar apenas um valor em uma matriz; os demais novos componentes são considerados iguais a zero:

-2.80001.4142 1.1250 1.0 0 6.0
0.3894 2.0138 4.0 100.0 0 0

>> m(1,6) = 6 m = c) Criação de vetores linearmente espaçados: através do símbolo “:”. Veja o exemplo abaixo, no qual x é um vetor que varia entre 1 e 5 com incremento 1 (valor padrão).

1 2 3 4 5

>> x = 1:5 x = Se o incremento for diferente de 1, o seu valor deve ser incluído na instrução.

Veja o exemplo a seguir, no qual o incremento do vetor x é 0,5 e o do vetor y é . 0,5−

1.0 1.5000 2.0 2.5000 3.0 3.5000 4.0 4.5000 5.0
5.0 4.5000 4.0 3.5000 3.0 2.5000 2.0 1.5000 1.0

> x = 1:0.5:5 x = >> y = 5:-0.5:1 y = 10 d) Principais instruções relacionadas com matrizes. Tabela 3.1: Comandos para criação de matrizes elementares função descrição Exemplo eye cria matriz identidade

1 0 0
0 1 0
0 0 1

>> eye(3) ans = zeros cria matriz com todos os elementos nulos

0 0 0
0 0 0

>> zeros(2,3) ans = ones cria matriz com todos os elementos iguais a um

1 1 1
1 1 1

>> ones(2,3) ans = rand cria matriz com números pseudo- randômicos com distribuição uniforme entre 0 e 1

0.9501 0.6068 0.8913
0.2311 0.4860 0.7621

>> rand(2,3) ans = e) Concatenação de matrizes: criação de matrizes a partir de outras matrizes:

>> A = [1 2 3]; >> B = [4 5 6];

1 2 3 4 5 6
1 2 3
4 5 6
1 4
2 5
3 6

>> C = [A B] C = >> D = [A ; B] D = >> E = [A' B'] E = 1

3.2 Operações com Matrizes

É muito importante notar que o Matlab pode realizar uma operação matricial (em uma ou entre duas matrizes) como também uma operação elemento a elemento (em uma ou entre matrizes). Para exemplificar, considere as matrizes

A Tabela 3.2 apresenta as principais operações realizáveis com essas duas matrizes. Tabela 3.2: Operações com matrizes

Operação Operador Exemplo

transposta

Exemplo 1: Considere o seguinte sistema de equações lineares

yx x x yx x x yx x yx yx ou AXY=

Nesse caso, utiliza-se diretamente a operação matricial : YA*X=

-1 1 2
3 -1 1
-1 3 4
2
6
4

>> A = [-1 1 2 ; 3 -1 1; -1 3 4] A = >> Y = A*[1 ; -1 ; 2] Y =

equivalente a (divisão esquerda, ver tabela 3.2). -1X=A Y X=A\Y

0.7000
0.3000
0.2000

Note que nesse caso deve-se utilizar a operação de potência escalar, e não a matricial, pois para cada elemento de x deve-se calcular um valor de y. Veja como fica o código Matlab:

>> x=[-5:0.1:5]; >> y = x.^2 + 2*x -3;

>> plot(x,y)

3.3 Tratamento de Matrizes por Funções

Uma característica muito importante do Matlab é a forma como uma função manipula matrizes. Uma função no Matlab trata uma matriz como um todo, e não elemento a elemento. Tal característica é conhecida na literatura como bulk processing. Para entender tal característica, veja o seguinte exemplo. No primeiro caso, x é um escalar de valor 2. A variável a é simplesmente e. No segundo caso,

considera-se uma matriz m de dimensão . Nesse caso, B também é uma matriz

, no qual cada elemento é dado por .

7.3891

>> x = 2; >> a = exp(2) a =

0.9501 0.6068 0.8913
0.2311 0.4860 0.7621

>> M = rand(2,3) M =

2.5860 1.8346 2.4383
1.2600 1.6258 2.1428

Tal propriedade facilita bastante o desenvolvimento de programas. Por exemplo, se for desejado plotar o seno de x, para x variando entre 0 e 2. No Matlab, o código seria o seguinte: π

>> x = 0:0.1:2*pi;

>> plot(x,sin(x)); Em uma linguagem de programação sem bulk processing, o código seria algo desse tipo:

x(i) = xi
yi = sin(xi)
xi = xi + inc

inc = 0.1 xi = 0 i = 1 while xi <= 6.28 end plot(x,y)

O gráfico fornecido pelo Matlab é mostrado na figura abaixo.

Figura 3.2: Gráfico de para . sen(x)0x2≤≤π

3.4 Indexação de Matrizes

Uma tarefa que aparece com freqüência em programas é a necessidade de utilizar apenas determinados elementos de uma matriz, e não a matriz como um todo. Para isso, realiza-se uma indexação matricial. Considere a matriz M definida abaixo:

1 2 3 4
5 6 7 8
9 10 1 12

>> M = [1 2 3 4 ; 5 6 7 8 ; 9 10 1 12] M = a) Indexação de apenas um elemento. Se apenas um elemento for desejado, deve-se informar a posição que tal elemento ocupa na matriz (linha e coluna).

10

>> a = M(3,2) a = No Matlab, os elementos também são indexados seqüencialmente. Essa indexação segue por linha e depois por coluna. Assim, a matriz anterior é indexada da seguinte forma:

elem. 1elem. 4elem. 7elem. 10 elem. 2elem. 5elem. 8elem. 1 elem. 3elem. 6elem. 9elem. 12

10
4

>> b = M(6) b = >> c = M(10) c = b) Indexação de mais de um elemento. Se for desejado indexar uma faixa de elementos de uma matriz, pode-se utilizar o símbolo “:“. Dessa forma, cria-se submatrizes. Por exemplo, considere que se deseja criar uma matriz .

a linha de M, começando da coluna 2 até a coluna 4. Veja o exemplo:

6 7 8

>> Z = M(2,2:4) Z = 16

A mesma operação pode ser realizada com a ajuda de um “end”, que representa o final de um intervalo. Por exemplo:

6 7 8

>> Z = M(2,2:end) Z = c) Indexação de uma linha ou coluna completa. Outra ferramenta útil consiste em utilizar “:” sem números. Nesse caso, “:” representa todos os números de uma linha ou coluna. Por exemplo, se for desejado criar uma matriz Y formada pela primeira coluna de M. Nesse caso, define-se:

1
5
9

>> Y = M(:,1) Y =

3.5 Matrizes Multidimensionais

O Matlab permite a criação de matrizes com mais de duas dimensões. A forma de criação é idêntica a de matrizes bidimensionais. Exemplo: Criação de uma matriz de dimensão . 2×

1 2
3 4

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

5 6
7 8

>> B = [5 6 ; 7 8] B =

>> C(:,:,1) = A; >> C(:,:,2) = B

1 2
3 4

C(:,:,1) =

5 6
7 8

C(:,:,2) = 17

3.5 Funções Matriciais Básicas

Tabela 3.3: Funções matriciais básicas função descrição Exemplo det (X) determinante da matriz quadrada X

-3

>> X = [1 2 ; 4 5]; >> det(X) ans = inv (X) matriz inversa da matriz >> inv(X) ans =

-1.66670.6667
1.3 -0.3

diag (X) retorna a diagonal principal de X >> diag(X) ans =

1
5

diag (v) se v é um vetor, cria matriz diagonal utilizando elementos de v

>>>> v = [1 2 3];

1 0 0
0 2 0
0 0 3

>> diag(v) ans = reshape(x,n,m) cria matriz de dimensão a partir da matriz x n m×

1 3 5 7 9
2 4 6 8 0

>> x = [1 2 3 4 5 6 7 8 9 0]; >> reshape(x,2,5) ans =

3.6 Outros Tipos de Dados

Além de matrizes, o Matlab trabalha com outros três tipos de dados: • cadeias de caracteres (strings);

• células (cell arrays);

• estruturas (structus).

a) Cadeias de caracteres (strings)

Cadeias de caracteres são dados tipo texto, formados por cadeias de caracteres

ASCII (American Standard Code for Information Interchange). Cada caractere ocupa dois bytes de memória. No Matlab, uma string é definida entre ‘ ‘. Veja o exemplo.

(Parte 1 de 3)

Comentários