curso de extensÃo - prof-leonardo.com.br · tabela abaixo como ficaria essa constante numérica em...

63
1 1 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação CURSO DE EXTENSÃO Centro de Ciências Tecnológicas Departamento de Engenharia de Telecomunicações Professor Msc. Leonardo Gonsioroski Janeiro/2011

Upload: duongkhuong

Post on 11-Jul-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

1

1 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

CURSO DE EXTENSÃOCentro de Ciências Tecnológicas

Departamento de Engenharia de Telecomunicações

Professor Msc. Leonardo Gonsioroski

Janeiro/2011

2

2 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Módulo I – Introdução ao MATLAB

1. INTRODUÇÃO

Este pequeno manual tem o objetivo de guiar você de forma ordenada, para realizar inicialmente operações simples na ferramenta MATLAB, tais como, operações algébricas, análise de funções de primeiro e segundo graus, entender e diferenciar matrizes e vetores, impressão de gráficos; trabalhar com algumas das principais funções matemáticas, resolver equações diferenciais e integrais. Após os ensinamentos deste curso você estará apto a dominar completamente a ferramenta aplicando o conteúdo aprendido nos estudos direcionados a sua área de trabalho e/ou pesquisa.

1.1. O que é o MATLAB?

MATLAB (MATrix LABoratory) é um é um ambiente de programação (software) interativo de alta performance voltado para o cálculo numérico, possuindo características de aplicativo (facilidade para o usuário) e de linguagem de programação (flexibilidade).

O MATLAB integra análise numérica, cálculo com matrizes, processamento de sinais e construção de gráficos em um ambiente fácil de usar, onde problemas e soluções são expressos

de forma muito parecida como eles são escritos matematicamente, ao contrário da programação tradicional que exige uma sintaxe mais complexa.

O MATLAB é um sistema interativo cujo elemento básico de informação é uma matriz que não requer dimensionamento. Esse sistema permite a resolução de muitos problemas numéricos em apenas uma fração do tempo que se gastaria para escrever um programa semelhante em linguagem Fortran, Basic ou C++. Além disso, as soluções dos problemas são expressas no MATLAB quase exatamente como elas são escritas matematicamente.

O MATLAB apresenta uma série de funções matemáticas já implementadas que podem ser utilizadas em uma rotina construída pelo usuário. Estas funções são agrupadas de acordo com a área de interesse em toolboxes e armazenadas em diretórios específicos. Qualquer função a ser utilizada deve estar no diretório de trabalho ou caminho (path) do MATLAB.

Ilustração da Tela do Software MATLAB 7.0

3

3 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

1.2. Conhecendo o MATLAB

a. Carregando o MATLAB

Na área de trabalho do Windows, um duplo clique no ícone MATLAB carrega o aplicativo.

Uma vez inicializado o MATLAB, aparecerá na tela uma janela de comandos e o "prompt" padrão (>>) é exibido na tela. A partir deste ponto, o MATLAB espera um comando (instruções) do usuário. Todo comando deve ser finalizado teclando-se Enter.

Tela inicial do MATLAB

Ao abrir o MATLAB o Command Window (ou Janela de comandos) será mostrada, poderão aparecer ainda outras janelas:

� WorkSpace – que mostra todas as variáveis que está sendo utilizada no programa em desenvolvimento.

� Command History – Mostra o histórico de comandos dados ao MATLAB na Janela de Comandos.

b. Usando o Command Window

A janela Command Window pode ser utilizada para cálculos gerais, usuários com maior domínio da ferramenta e mais experientes também fazem uso desta janela para programação, entretanto neste curso aprenderemos inicialmente a programar usando o editor de textos e arquivos .m (que serão explicados mais a frente), pois entende-se que tornaremos o aprendizado sólido.

Como já foi mencionado acima, o MATLAB possui uma sintaxe de programação relativamente simples, para realizarmos uma álgebra qualquer no Command Window, como por exemplo, 321 +456– 5 + 90, basta escrevermos no “prompt” do Command Window:

4

4 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

>> 321 + 456 – 5 + 90

ans=

862

Note que o MATLAB chamou o resultado de ans (answer=resposta), isso ocorre porque não

foi dado nenhum nome para a conta executada, ou seja, não foi declarada nenhuma variável. Caso declarássemos a variável da álgebra acima de SOMA, desta forma:

> SOMA = 321 + 456 – 5 + 90

O resultado que apareceria na tela do Command Window seria:

SOMA=

862

No caso de entrada de linhas de comando no Comand Window, as teclas com setas podem ser usadas para se encontrar comandos dados anteriormente, para execução novamente ou sua reedição. Caso seja necessário corrigir ou reescrever uma linha inteira no Command Window, podemos simplesmente pressione a tecla "seta para cima". O comando errado retorna, e você pode, então, corrigir o erro, ou redigitar toda uma nova linha de comando. Além das teclas com setas, pode-se usar outras teclas para reeditar a linha de comando. A seguir é dada uma breve descrição destas teclas:

↑ retorna a linha anterior ↓ retorna a linha posterior ← move um espaço para a esquerda → move um espaço para a direita

Ctrl ← move uma palavra para a esquerda Ctrl → move uma palavra para a direita Home move para o começo da linha End move para o final da linha Del apaga um caractere a direita Backspace apaga um caractere a esquerda

Tabela 1 – Teclas de edição

c. Operações Básicas e Expressões Lógicas

O MATLAB oferece as seguintes operações aritméticas básicas:

Operação Símbolo Exemplos

Adição, a+b + 5 + 6

Subtração, a-b - 19 - 4.7

Multiplicação, a.b * 5.02 * 7.1

Divisão, a÷b / ou \ 45/5 ou 5\45

Potência, ab

^ 3^4

Tabela 2 – Operações aritméticas

A ordem nas expressões segue a ordem das regras de álgebra: Potência, seguida da multiplicação e da divisão, que por sua vez são seguidas pelas operações de adição e subtração. Parênteses podem ser usados para alterar esta ordem. Neste caso, os parênteses mais internos são avaliados antes dos mais externos.

5

5 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

ATENÇÃO!!! No MATLAB chaves e colchetes não são usados como na álgebra, caso seja necessário usar chaves e colchetes nas expressões matemáticas, as chaves e os colchetes devem ser substituídos por parênteses.

Chaves e Colchetes no MATLAB terão funções específicas na sintaxe de progrmação.

Uma expressão se diz lógica se os operadores são lógicos e os operandos são relações e/ou variáveis do tipo lógico. Os operadores relacionais realizam comparações entre valores do mesmo tipo. Os operadores relacionais utilizados pelo MATLAB são:

Operador Relacional Descrição

> maior que

>= maior ou igual

a < menor que

<= menor ou igual

a == igual a

~= diferente de

Tabela 3 – Operações relacionais

Note que (=) é usado para atribuição de um valor a uma variável, enquanto que (==) é usado para comparação de igualdade. No MATLAB os operadores relacionais podem ser usados para comparar vetores de mesmo tamanho ou escalares.

O resultado de uma relação ou de uma expressão lógica é verdadeiro ou falso; contudo, no MATLAB o resultado é numérico, sendo que 1 significa verdadeiro e 0 significa falso. Por exemplo:

>> 5 > 8

ans =

0

>> 5==5

ans =

1

Os operadores lógicos permitem a combinação ou negação das relações lógicas. Os operadores lógicos do MATLAB são:

Operador lógico Descrição Uso

& E Conjunção

| ou Disjunção

~ Não Negação

Tabela 4 – Operações lógicas

6

6 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

d. Formatos Numéricos e Regras de Construção de Variáveis

O formato em que uma constante numérica é mostrada no MATLAB segue, como opção default, os seguintes critérios:

1. Se um resultado é inteiro, o MATLAB mostra o número como inteiro; 2. Quando o resultado é real, o MATLAB mostra o número com 4 dígitos à direita do

ponto decimal; 3 . Se os dígitos do resultado estiverem fora desta faixa, o MATLAB mostra o resultado

usando a notação científica.

Este default pode, entretanto, ser modificado utilizando-se o Numeric Format do item Options na barra de menus. Usando-se por exemplo a constante numérica (33,5), vejamos na tabela abaixo como ficaria essa constante numérica em cada um dos formatos numéricos disponíveis no MATLAB:

Comando Formato Comentário

format short 33.5000 4 dígitos decimais (formato default)

format long 33.50000000000000 16 dígitos

format short e 3.3500e+001 5 dígitos mais expoente

format long e 3.350000000000000e+001 16 dígitos mais expoente

format hex 4040c00000000000 Hexadecimal

format bank 33.50 2 dígitos decimais

format + + positivo, negativo ou zero

format rat 67/2 Racional

Tabela 5 – Formatos Numéricos

Os nomes das variáveis devem consistir de uma única palavra, conforme as regras expressas na tabela 6:

Regras de construção das variáveis Comentários/Exemplos

Variáveis com letras minúsculas e maiúsculas

são diferentes, mesmo que consistam das

mesmas letras.

Total, total, TOTAL e ToTaL são variáveis

diferentes.

As variáveis podem consistir de até 19

caracteres Sdtf65erkjh3448bafg

As variáveis devem começar com uma letra e

pode ser seguida de letras, números ou subscrito

(_). Não podem conter espaços.

Var_2

X34 a_b_c

Tabela 6 – Regras para construção de variáveis

7

7 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Alguns nomes são usados para variáveis predefinidas, ou seja, são variáveis especiais do MATLAB. Estas são:

Variáveis especiais Significado

ans Variável usada para exibir os resultados

pi Número 3,14159

eps Menor número tal que, quando adicionado a 1, cria

um número maior que 1 no computador.

flops Armazena o número de operações em ponto flutuante

realizadas.

inf Significa infinito

NAN ou nan Significa não é um número, por exemplo, 0/0.

i e j Unidade imaginária √−1 nargin Número de argumentos de entrada de uma função

nargout Número de argumentos de saída de uma função

realmin Menor número que o computador pode armazenar

realmax Maior número que o computador pode armazenar

Tabela 7 – Variáveis do Matlab

e. Comentários e pontuações

Como em toda linguagem de programação, alguns símbolos possuem funções específicas. No MATLAB os quatro símbolos abaixo são bastante utilizados é importante entender suas funcionalidades.

Um dos mais importantes símbolos é o de “%” que permite incluir um comentário e/ou observação nas linhas de comando, isso facilita o entendimento do programa quando visto por outra pessoa.

Símbolo Função

, Vírgula – Usado para separar comandos dados em uma mesma linha.

;

Ponto e Vírgula – Se o último caractere da declaração é um ponto e vírgula,

a impressão que aparece no Command Window é suprimida, mas a tarefa é

realizada.

% Por Cento – Todo e qualquer caractere depois do símbolo de porcentagem é

tomado como um comentário.

comentário. ...

Pode-se continuar uma certa expressão na próxima linha usando um espaço

em branco e três pontos,"...", ao final das linhas incompletas.

Tabela 8 – Comentário e pontuações

Os espaços em branco entre os operadores (aritméticos, lógicos, relacionais) e as variáveis (ou constantes) são opcionais. O mesmo para vale para a vírgula, o ponto e vírgula e o símbolo de porcentagem. No entanto, o espaço em branco entre a última variável (ou constante) de uma linha e os três pontos é obrigatório.

8

8 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

f. Funções Matemáticas

O MATLAB tem uma série de funções científicas pré-definidas. A palavra função no MATLAB tem um significado diferente daquele que tem na Matemática. Aqui, função é um comando, que pode ter alguns argumentos de entrada e alguns de saída. Algumas dessas funções são intrínsecas, ou seja, não podem ser alteradas pelo usuário. Outras funções estão disponíveis em uma biblioteca externa distribuídas com o programa original (MATLAB TOOLBOX), que são na realidade arquivos com a extensão ".m" criados a partir das funções intrínsecas. A biblioteca externa (MATLAB TOOLBOX) pode ser constantemente atualizada à medida que novas aplicações são desenvolvidas.

As categorias gerais de funções matemáticas disponíveis no MATLAB incluem:

o Matemática elementar; o Funções especiais; o Matrizes elementares e especiais; o Decomposição e fatoração de matrizes; o Análise de dados; o Polinômios; o Solução de equações diferenciais; o Equações não-lineares e otimização; o Integração numérica; o Processamento de sinais.

A maioria das funções são fáceis de gravar, pois tem uma escrita muito parecida e algumas até iguais de como elas são escritas matematicamente.

abs(x) valor absoluto de x.

acos(x) arco cujo coseno é x

asin(x) arco cujo seno é x.

atan(x) arco cuja tangente é x.

conj(x) conjugado complexo

cos(x) coseno de x.

cosh(x) coseno hiperbólico de x.

exp(x) exponencial ex.

floor(x) arredondamento em direção ao -∞

gcd(x,y) máximo divisor comum de x e y.

lcm(x,y) mínimo múltiplo comum de x e y.

log(x) logaritmo de x na base e.

log10(x) logaritmo de x na base 10.

rem(x,y) resto da divisão de x por y.

round(x) arredondamento para o inteiro mais próximo

sign(x) função signum

sin(x) seno de x.

sinh(x) seno hiperbólico de x.

sqrt(x) raiz quadrada de x.

tan(x) tangente de x.

tanh(x) tangente hiperbólica de x.

9

9 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Tabela 9 – Algumas funções matemáticas

g. Comandos de auxílio

No MATLAB, pode-se obter ajuda sobre qualquer comando ou função. Isto pode ser feito basicamente de três formas: interativamente através do menu de barras, através do comando help ou do comando lookfor.

Digitando-se simplesmente o comando help,

>> help

O MATLAB mostra uma listagem de todos os pacotes disponíveis. Ajuda sobre um pacote específico ou sobre um comando ou função específica é obtida com o comando help <tópico>, onde tópico pode ser o nome de um pacote, de um comando ou função.

O Comando lookfor provê assistência pela procura através de todas as primeiras linhas dos tópicos de auxílio do MATLAB e retornando aquelas que contenham a palavra-chave especificada. O interessante deste comando é que a palavra chave não precisa ser um comando do MATLAB. Sua sintaxe é lookfor <palavra-chave>, onde palavra-chave é a cadeia de caracteres que será procurada nos comandos do MATLAB.

h. Funções de Manipulação algébricas

Abaixo segue um resumo das funções para manipulação de expressões algébricas:

� save [nome_de_arquivo] [nome_da(s)_variável(is)] – salva somente as variáveis

especificadas.

� load [nome_de_arquivo] [nome_da(s)_variável(is)] – carrega as informações

salvas.

� clear [nome_da_variável] - apaga a variável do workspace.

� clear - apaga todas as variáveis do workspace.

� clc – digitado no Command Window para limpar a janela.

� pretty(expr) - exibe a expressão expr numa forma mais bonita.

� simple(expr) - procura encontrar uma forma mais simples de escrever uma

expressão expr.

� inv(a) – calcula a inversa da matriz “a”.

� det(a) – calcula o determinante da matriz “a”.

� abs(a) – retorna o valor absoluto ou o módulo de um número complexo “a”.

� real(a) – retorna o número real de um número complexo.

� imag(a) – retorna o número imaginário de um número complexo.

� ones(a) – gera uma matriz de números 1 de ordem “a x a”.

� zeros(a) – gera uma matriz de números 0 de ordem “a x a”.

10

10 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

2. ESCREVENDO LINHAS DE COMANDO

Agora que já conhecemos mais intimamente o Programa MATLAB, sabendo como representar as operações matemáticas básicas, como são os formatos numéricos existentes, quais são as regras para utilização de variáveis, como são feitos comentários, como podemos recorrer ao Help do programa para mais informações e etc. vamos então iniciar as noções de programação, aprendendo inicialmente como entrar com linhas de comandos no editor de texto.

a. Abrindo um novo arquivo

Aprenderemos a trabalhar com o MATLAB utilizando sempre o editor de textos.

Nosso primeiro passo será abrir o editor, criar um novo arquivo e nomeá-lo. Após salvá-lo, executaremos as rotinas nele incluídas.

Para abrir o editor, basta clicar em file no menu do software, depois selecionar /new/Blank M-

file ou então clicar no botão de atalho correspondente. Nomeie e salve o arquivo (mesmo ainda vazio). OBS: Use nomes curtos e sem caracteres especiais.

Este editor costuma ser mais utilizado pelos iniciantes no MATLAB, usuários mais experientes também podem fazer uso diretamente da janela de Comando (Comand Window).

O Editor de texto permite que você escreva as linhas de comando do programa que está em desenvolvimento e cheque os resultados na Janela de Comandos após ter pressionado a tecla F5.

b. Escrevendo Linhas de Comando no Editor de Texto

No Editor de Textos do MATLAB escreveremos as linhas de comando e a executaremos pressionando a tecla F5 do teclado ou a tecla de atalho correspondente no MATLAB.

As respostas para os comandos dados ao MATLAB aparecerão na Janela de Comandos (Command Window). Por exemplo, para adicionar uma Matriz linha (ou um Vetor linha), basta digitar no editor de texto a expressão a seguir:

>> a = [1 2 3] -> representará uma matriz 1x3 (ou seja, 1 linha e 3 colunas).

ATENÇÃO!!! A matriz deve estar entre colchetes e os elementos serem separados por espaços ou virgulas.

11

11 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Ao executar o programa pressionando a tecla ‘F5’, a resposta a esse comando aparecerá no Command Window, nesse caso a matriz a informada, isso é mostrado na figura abaixo.

Para ter matrizes com mais linhas, basta colocar após a primeira linha um ‘;’ (ponto-e-virgula) e escrever a segunda linha da matriz, desta forma:

>> b = [1 2 3 ; 4 5 6] -> representará uma matriz 2x3 (ou seja, 2 linhas e 3 colunas).

Agora vamos trabalhar...

1-Escreva a expressão acima e execute o programa pressionando a tecla ‘F5’

2-Note que no Command Window aparece a matriz

Para cálculos com valores escalares, podemos utilizar a matrix 1x1 e neste caso sem adição dos colchetes.

>> x = 3 -> Representa o número escalar ‘3’.

OBS: Note que tudo, que é digitado no editor e é executado, é salvo automaticamente e os resultados aparecem na janela de comando, isso serve para checarmos as respostas antes de dar continuidade na escrita do programa.

Para álgebra comum a digitação das linhas de comandos é intuitiva. Por exemplo:

Para representar no MatLab a expressão: , basta escrever no editor exatamente a seqüência de caracteres abaixo:

>> y = (1/4) * (x.^2 + 5*x – 3) (I)

4

352−+

=xx

y

OBS: Note a importância de usar o ponto antes do sinal de circunflexo na expressão da função y, sem o ponto o MatLab pode entender como um erro, pois ‘x’, não representaria uma matriz.

12

12 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Se você fornecer valores para x, o MATLAB, calculará os valores de y e todas essas informações poderão ser vistas no Command Window, É muito importante que os valores de x precisem ser informados antes da equação, isto porque o MATLAB lê o programa linha a linha, e então a variável x que é declarada na equação precisa ser conhecida.

Para associarmos valores a x, escrevemos x, como sendo um vetor de valores que vão de 1 até 10.

>> x = 1:10 (II) -> isso representa um vetor x que se constitui de valores de 1 a 10. O intervalo entre cada valor será igual a 1.

Agora vamos trabalhar...

1. Escreva as expressões (II) e (I) acima, nessa seqüência, depois execute o programa pressionando a tecla ‘F5’

2. Note que no Command Window aparecem os valores de x (de 1 a 10) e os valores que y assumiu para cada valor do vetor x.

Foi possível notar que os valores de x aumentaram em intervalos iguais a 1. Outros intervalos podem ser colocados, para isso, basta escrever o intervalo desejado entre dois pontos.

>> x = 1: ‘intervalo desejado’ : 20

>> x = 1:0.5:20 -> Neste caso os intervalos serão de 0,5.

13

13 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

2.1. Exercícios de Revisão e Fixação

1. Escreva uma matriz linha de 5 termos, todos com valores iguais a 2.

2. Escreva uma matriz linha de 1 a 5, usando a notação de vetor.

3. Faça a Soma das duas Matrizes acima.

4. É possível fazer a Multiplicação das Duas Matrizes diretamente? Por quê? Qual seriam as

possíveis soluções? Mostrar os Resultados.

5. Crie uma matriz 3 x 3 com quaisquer valores a sua escolha, depois verifique o determinante dessa matriz e se possível calcule sua inversa e então calcule a matriz identidade ���.

6. Escreva a equação: � = 4�� + 56� + 120. Encontrar os valores de y para:

a) Valores de x que vão de 1 a 10, em intervalos unitários; b) Valores de 3 a 8 em intervalos de 0,5.

7. Sendo � = 3e � = 5 calcule no MATLAB:

a) �1 = � + �b) �1 = 3� + 5�c) �1 = 4����(45�)

d) �1 = ��� √!��!

14

14 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

3. MATRIZES E VETORES

O MATLAB permite a manipulação de linhas, colunas, elementos individuais e partes de matrizes.

3.1 Construção de Vetores

Na tabela, tem-se um resumo das diversas formas de se construir um vetor no MATLAB.

X=primero : último Cria um vetor x começando com o valor primeiro,

incrementando-se de 1(um) em 1(um) até atingir o valor

último ou o valor mais próximo possível de último

X=primeiro:incremento:último Cria um vetor x começando com o valor primeiro,

incrementando-se do valor incremento até atingir o valor

último ou o valor mais próximo possível de último

X=linspace(primeiro, último, n) Cria um vetor x começando com o valor primeiro e

terminado no valor último, contendo n elementos

linearmente espaçados.

X=logspace(primeiro, último, n) Cria um vetor x começando com o valor 10primeiro

e

terminando no valor 10último

, contendo n elementos

logaritmicamente espaçados

X=[2 2*pi sqrt(2) 2-3j] Cria um vetor x contendo os elementos especificados

Exemplo 1:

>> x = 1 : 5

gera um vetor linha contendo os números de 1 a 5 com incremento unitário. Produzindo

X =

1 2 3 4 5

>>

x=1:10.5

x=

1 2 3 4 5 6 7 8 9 10

Exemplo 2:

>> z = 6 : -l : l

Z =

6 5 4 3 2 1

15

15 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Exemplo 3: Pode-se, também, gerar vetores usando a função linspace. Por exemplo:

>> k = linspace (0, l, 6)

K =

0 0.2000 0.4000 0.6000 0.8000 1.0000

gera um vetor linearmente espaçado de 0 a 1, contendo 6 elementos. >> x=linspace(1,10.5,5)

x=

1.0000 3.3750 5.7500 8.1250 10.5000

Exemplo 4: >> x=logspace(0,2,5)

x=

1.0000 3.1623 10.0000 31.6228 100.00

Exemplo 5: >> x=[8 6 8.10 5-6j]

x=

8.0000 6.0000 8.1000 5.0000-6.0000i

Nos exemplos acima os vetores possuem uma linha e várias colunas (vetores linha). Da mesma forma podem existir vetores coluna (uma coluna e várias linhas). Para se criar um vetor coluna elemento por elemento estes devem estar separados por ( ; ). Por exemplo:

>> v=[1.5;-3.2;9]

v =

1.5000

-3.2000

9.0000

Esses vetores coluna podem também ser criados a partir dos comandos utilizados anteriormente para criar os vetores linha, acompanhados do símbolo ( ' ), que é o operador de transposição. Exemplo:

>> y=(1:0.5:3)'

y =

1.0000

1.5000

2.0000

2.5000

3.0000

16

16 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

3.2 Exercícios de Revisão e Fixação 1. Crie vetores usando todas as formas possíveis mostradas no quadro abaixo:

17

17 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

a. Endereçamento de Vetores

No MATLAB, cada um dos elementos de um vetor podem ser acessados através de seu

índice que identifica cada uma das colunas. Por exemplo: >> x=1:10 x=

1 2 3 4 5 6 7 8 9 10

O comando x(3)acessa o terceiro elemento do vetor x criado acima, notem que a resposta

será o valor 3, que é exatamente o terceiro elemento do vetor x.

>> x(3)

ans =

3

>> x(5) % Acessa o quinto elemento de x

ans =

5

Esses elementos de um vetor também podem ser acessados em blocos, por exemplo, seja o vetor c:

>> c=linspace(10,40,7)

c =

10 15 20 25 30 35 40

>> c(3:5) % terceiro a quinto elemento de c

ans =

20 25 30

>>c(5:-2:1) % quinto, terceiro e primeiro elementos de c

ans =

30 20 10

O endereçamento indireto também é possível, permitindo referenciar os elementos em qualquer ordem:

>> c([4 1]) %quarto e primeiro elementos

ans =

25 10

No caso de vetores coluna, os comandos acima funcionam de maneira similar. Por exemplo:

>> d=c' d =

10

15

20

25

30

35

40

18 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

>> d([4 1]) %quarto e primeiro elementos

ans =

25

10

>> d(5:-2:1)

ans =

30

20

10

3.3 Exercícios de Revisão e Fixação

1. O Cria um vetor de 2 a 128 com 40 elementos igualmente espaçados. 2. Encontre o Décimo Quinto elemento do vetor criado. 3. Encontre os valores entre as posições 3 e 6. 4. Encontre os valores na posição 7 e 24.

19

19 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

1.00 2.00 3.00 4.00 6.50 9.00

0 0.50 1.00

15.0000 7.0000 6.0000 0.5000 1.7143 6.2500

b. Operações entre Vetores

As operações básicas entre vetores só são definidas quando estes tiverem o mesmo tamanho e orientação (linha ou coluna). Estas operações são:

Seja a=[ a1 a2 ... an] , b=[ b1 b2 ... bn] e c um escalar

operação expressão resultado

adição escalar a+c [a1+c a2+c ... an+c]

adição vetorial a+b [a1+b1 a2+b2 ... an+bn]

multiplicação escalar a*c [a1*c a2*c ... an+c]

multiplicação vetorial a.*b [a1*b1 a2*b2 ... an*bn]

divisão a./b [a1/b1 a2/b2 ... an/bn]

potenciação a.^c [a1^c a2^c ... an^c]

c.^a [c^a1 c^a2 ... c^an]

a.^b [a1^b1 a2^b2 ... an^bn]

3.4 Matrizes

O como já falamos anteriormente, o MATLAB trabalha essencialmente com um tipo de objeto, uma matriz numérica retangular ( 1x1; 2x2; 3x3; i ( linha) x j (coluna); etc).

Os elementos de cada linha da matriz são separados por espaços em branco ou vírgulas e

as colunas separadas por ponto e vírgula, colocando-se colchetes em volta do grupo de elementos que formam a matriz. Por exemplo, entre com a expressão:

>> A=[ 1 2 3;4 5 6;7 8 9 ]

Pressionando <enter> o MATLAB mostra o resultado

A =

1 2 3 4 5 6 7 8 9

As linhas das matrizes também podem ser definidas através dos comandos utilizados anteriormente para se definir vetores linha. Por exemplo:

>> A=[1:3;linspace(4,9,3);0:.5:1] A

=

Os elementos de uma matriz (ou de um vetor) também podem ser definidos por operações ou funções matemáticas. Por exemplo:

>> B=[15 7;sqrt(36) cos(pi/3);12/7 2.5^2] B

=

20

20 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

a. Operações com Matrizes

As operações com matrizes no MATLAB são as seguintes:

· Transposta; · Adição; · Subtração; · Multiplicação; · Divisão à direita; · Divisão à esquerda; · Exponenciação;

Matriz Transposta

O caracter apóstrofo, " ' ", indica a transposta de uma matriz. Considere os exemplos a

seguir:

>>A=[1 2 3; 4 5 6; 7 8 0]

A = 1 2 3

4 5 6

7 8 0

>> B = A'

B = 1 4 7

2 5 8

3 6 0

>> x = [-1 0 2]'

X =

-1

0

2

Adição e Subtração de Matrizes

A adição e subtração de matrizes são indicadas, respectivamente, por "+" e "-". As operações são definidas somente se as matrizes tiverem as mesmas dimensões. Por exemplo, a soma com as matrizes mostradas acima, A + x, não é correta porque A é 3x3 e x é 3x1. Porém,

>> C = A + B

é aceitável, e o resultado da soma é

C =

2 6 10 6 10 14 10 14 0

21

21 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

A adição e subtração também são definidas se um dos operadores é um escalar, ou seja, uma matriz l x l. Neste caso, o escalar é adicionado ou subtraído de todos os elementos do outro operador. Por exemplo:

>> y = x – 1

resulta em

Y =

-2

-1

1

Multiplicação A multiplicação de matrizes é indicada por " * ". A multiplicação x * y é definida somente se a segunda dimensão de x for igual à primeira dimensão de y. A multiplicação

>> x'* y

é aceitável, e resulta em Ans =

4

É evidente que o resultado da multiplicação y' * x será o mesmo. Existem dois outros produtos que são transpostos um do outro. >> x*y'

Ans =

2 l -l

0 0 0

-4 -2 2

>> y*x'

Ans =

2 0 -4

1 0 -2

-1 0 2

O produto de uma matriz por um vetor é um caso especial do produto entre matrizes. Por exemplo A e X,

>> b = A*x que resulta em

B =

5

8

-7

22

22 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Naturalmente, um escalar pode multiplicar ou ser multiplicado por qualquer matriz.

>> pi*x

Ans =

-3.1416

0

6.2832

Além da multiplicação matricial e escalar, podemos ter a multiplicação por elemento de matrizes de mesma dimensão. Esse tipo de operação é feita utilizando-se um ponto ( . ) antes do operador de multiplicação ( * ). Ou seja, se A e B são matrizes definidas por A=[ a11 a12 ... a1n ; a21 a22 ... a2n ; ... ; am1 am2 ... amn] e B=[ b11 b12 ... b1n ; b21 b22 ... b2n ; ... ; bm1 bm2 ... bmn ], então A.*B =aij*bij. Por exemplo:

>> A.*B

ans =

1 8 21 8 25 48

21 48 0

Divisão Existem dois símbolos para divisão de matrizes no MATLAB "\" e "/". Se A é uma matriz quadrada não singular, então A\B e B/A correspondem respectivamente à multiplicação à esquerda e à direita da matriz B pela inversa da matriz A, ou inv(A)*B e B*inv(A), mas o resultado é obtido diretamente. Em geral,

� X = A\B é a solução de A*X = B � X = B/A é a solução de X*A = B

Por exemplo, como o vetor b foi definido como A*x, a declaração z = A\b, resulta em: Z =

-1 0 2

A divisão por elemento entre matrizes é definida de maneira similar à multiplicação por

elemento, ou seja, A./B= aij/bij e A.\B= aij\bij , onde A e B têm mesma dimensão. 3.5. Elementos das Matrizes

Um elemento individual da matriz pode ser indicado incluindo os seus subscritos entre

parênteses. Por exemplo, dada a matriz A:

A =

1 2 3

4 5 6

7 8 9

23

23 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

2 3 5 6 8 10

1 2 3 4 5 6

A declaração do tipo A(3,3) = A(1,3) + A(3,l)resulta em: A =

1 2 3

4 5 6

7 8 10

>> A(1:3,2)

Ans =

2

5

8

>> A(1:3,2:3)é uma submatriz 3x2, que consiste das três linhas e das últimas duas colunas de A.

Ans =

Utilizando os dois pontos no lugar de um subscrito denota-se todos elementos da linha ou coluna. Por exemplo:

>> A(1:2,:)

Ans =

Que é uma submatriz 2x3 que consiste da primeira e segunda linhas e todas colunas da matriz A. � Funções ou Comandos: o MATLAB possui algumas funções que se aplicam a matrizes como,

por exemplo, as funções size (fornece o número de linhas e colunas de uma matriz) e length (fornece o maior valor entre o número de linhas e colunas).

O MATLAB tem também funções que se aplicam individualmente à cada coluna da

matriz produzindo um vetor linha com os elementos correspondentes ao resultado de cada coluna. Se a função for aplicada à transposta de da matriz, os resultados serão relativos a cada linha da matriz. Se o argumento da função for um vetor, o resultado será um escalar.

Algumas dessas funções são:

função descrição

sum soma dos elementos

prod produto dos elementos

mean média aritmética std desvio padrão max maior elemento

min menor elemento sort ordena em ordem crescente

24

24 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

0 0 0 0 0 0 0 0 0 0 0 0

Submatrizes.

Sendo B uma matriz 5x5 unitária, podemos defini-la através da seguinte função:

>> B =

B =

ones (5)

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Sendo C uma matriz de zeros 3x4, podemos defini-la como:

>> C=zeros(3,4) C

=

Para que o MATLAB gere uma matriz de números aleatórios entre 0 e 1, utilizamos a função rand (veja também a função randn, utilizando o comando help ). Exemplo:

>> D=rand(2,3) D

=

0.2190 0.6789 0.9347 0.0470 0.6793 0.3835

3.6 Exercícios de Revisão e Fixação

1. Crie uma matriz A(5 x 5) com valores a sua escolha e uma matriz B (5 x 5) com uns, depois faça:

a) Calcule a soma dos elementos de cada coluna da Matriz " − #.

b) Calcule a multiplicação dos elementos de cada coluna da Matriz "�#.

c) Qual o elemento de maior valor em cada linha da Matriz A?

d) Qual o elemento de menor valor em cada coluna da Matriz 2A?

25

25 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Módulo II – Criação e Análise de Gráficos

O programa MATLAB possui ferramentas poderosas e amigáveis para a visualização de dados, fácil de implementar e fácil de averiguar. Nesta seção apresentaremos aspectos básicos e uma visão geral dos recursos gráficos disponíveis. Informações detalhadas ou sobre gráficos específicos podem ser obtidos no Help do MATLAB.

Os dados a serem visualizados em um gráfico devem estar, tipicamente, em um vetor. O MATLAB não desenha diretamente gráficos de funções como em outros softwares (ex.: MAPLE ou Mathematica).

1. Gráficos Bidimensionais

a. O Comando PLOT

Para se desenhar o gráfico de uma função do tipo � = �$%(�), que varia de −� até �, devemos inicialmente dar valores a � e depois escrever a função seno, por fim a função plot do MATLAB para gerar o gráfico:

>> x = -pi : 0.1 : pi

>> y = sin(x)

>> plot(y)

O resultado aparecerá no Command Window de forma descritiva e também será mostrado o gráfico da função seno. LEMBRANDO! Que no caso de se colocar o ( ; ) após as linhas de comandos mostradas acima, nada aparecerá no Command Window.

Note que o eixo das abscissas não reflete a faixa de valores que foi usada para produzir o vetor x, −� até �. Ao invés disso, o plot assume que o eixo das abscissas deve ser o índice do vetor. Para plotar os valores corretos no eixo das abscissas, basta usar uma pequena variação do comando plot, conforme mostrado abaixo:

>> x = -pi : 0.1 : pi ;

>> y = sin (x);

>> plot(x, y);

26

26 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Quando passamos dois vetores para plot , a função assim que o primeiro vetor é o das abscissas, e o segundo vetor é o das ordenadas. O resultado é:

Podemos gerar dois gráficos na mesma tela usando apenas o comando plot. Mais a frente veremos outras maneiras de gerar mais de um gráfico.

x=0:0.1:2*pi; % define pontos no eixo x

y=sin(x); % seno de x

z=cos(x) % cosseno de x

plot(x,y,x,z) % dois gráficos

O resultado ficaria:

27

27 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

b. Deixando o visual do gráfico mais amigável

O programador pode trabalhar melhor a visualização dos gráficos incluindo Título ao gráfico, alterando os tipos de linha ou a cor das linhas, incluindo nomes para os eixos do gráfico, legenda, adicionar linhas de grades e incluir textos no gráfico. Usaremos a função seno para demonstrar essas funcionalidades:

� O Comando Title: Gera o título do Gráfico

>> x=0:0.1:2*pi; % define pontos no eixo x

>> y=sin(x); % seno de x

>> plot(x,y)

>> title('Exemplo de gráfico') % define o título do gráfico

O resultado será:

� Estilos de Linha e Símbolo: Os tipos de linhas, símbolos e cores usados para plotar gráficos

podem ser alterados caso os padrões estabelecidos automaticamente pelo MATLAB não sejam satisfatórios.

Segue abaixo as tabelas:

28

28 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Segue um exemplo: Gerar um gráfico vermelho com marcador do tipo losango. x=0:0.1:2*pi; % define pontos no eixo x

y=sin(x); % seno de x

z=cos(x); % cosseno de x

plot(x,y,'rd') % r de red, e d de losango

title('Grafico vermelho')

Posso alterar duas formas, como por exemplo: Um gráfico com Marcador do tipo quadrado e a

linha pontilhada.

x=0:0.1:2*pi;

y=sin(x);

z=cos(x);

plot(x,y,'b:s')

title('Grafico square, linha pontilhada')

29

29 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

� Comandos xlabel,ylabel e Legend: Geram nomes para os eixos de abscissas e ordenadas e inclui legenda. Tomando como exemplo a programação abaixo:

x=0:0.1:2*pi;

y=sin(x);

z=cos(x);

plot(x,y,'b:s',x,z,'rv--')

title('Graficos com legenda')

xlabel('Eixo x')

ylabel('Seno e Cosseno')

legend('seno','cosseno')

Teríamos o seguinte resultado:

c. Plotando mais de um gráfico na mesma tela

Vimos anteriormente como plotar mais de um gráfico na mesma tela usando o comando

plot. Veremos agora um outro comando que permite que os gráficos sejam distribuídos organizadamente da forma que acharmos conveniente, sendo que neste caso, a grande vantagem é podermos dar títulos e nomes de eixos personalizados para cada gráfico, pois os mesmo são plotados separadamante.

� O Comando Subplot: O comando subplot divide a janela de gráficos em & linhas e % colunas,

disponibilizando os gráficos na ordem que se quer.

Exemplo: Subplot (m,n,ordem) – significa dizer que este gráfico estará m-ésima linha e n-ésima coluna, sendo “ordem” ordenação deste gráfico. O uso deste comando ficará mais fácil de se entender analisando as linhas de comando abaixo:

30

30 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

x=0:0.1:3*pi;

y=sin(x);

z=cos(x);

w=3*cos(x);

%%%%%%%%%%%

subplot(2,2,1)

plot(x,y,'bo')

title('Celula 1: seno')

%%%%%%%%%%%

subplot(2,2,4)

plot(x,z,'rv--')

title('Celula 4: cosseno')

%%%%%%%%%%%

subplot(2,2,2)

plot(x,y,x,w)

title('Celula 2: sen e 3*cos c/ mesma escala')

%%%%%%%%%%

subplot(2,2,3)

plotyy(x,y,x,w)

title('Escala esq de seno, dir de 3*cosseno')

O resultado ficará assim:

31

31 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

d. Gráficos em Barra

Para construir gráficos em barra deve-se usar o comando bar(x,y), onde x e y são respectivamente dados de abscissa e ordenada. Segue um exemplo: x=-1.9:0.2:1.9; % cria x

y=exp(-x.*x); % cria y

bar(x,y)

title('Grafico de barras')

e. Escala Logarítmica, Coordenada Polar e Gráfico de Barras

O uso de loglog, semilogx, semilogy e polar é idêntico ao uso de plot. Estes comandos são

usados para plotar gráficos em diferentes coordenadas e escalas: � polar(Theta,R) – plota em coordenadas polares o ângulo THETA, em radianos, versos o raio R; � loglog – plota usando a escala log10xlog10; � semilogx – plota usando a escala semi-logarítmica. O eixo x é log10 e o eixo y é linear; � semilogy – plota usando a escala semi-logarítmica. O eixo x é linear e o eixo y é log10;

f. Outros Comandos de Gráficos Bidimensionais

32

32 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

2. Gráficos Tridimensionais

O MATLAB também cria gráficos tridimensionais. Estes gráficos são mais complexos, meu

conselho par a criação destes gráficos é que o programador conheça bem os comandos, se for o caso use o help do MATLAB para tirar possíveis dúvidas. Seguem alguns comandos para geração de gráficos Tridimensionais mais comuns:

a. Comando Mesh e Comando Surf

O comando mesh(X,Y,Z) cria uma perspectiva tridimensional plotando os elementos da

matriz Z em relação ao plano definindo pelas matrizes X e Y. O comando Surf (X,Y,Z) cria uma superfície colorida para o mesmo gráfico plotado no comando anterior. Por exemplo: [X,Y] = meshgrid(-2:.1:2, -2:.1:2);

Z = X.* exp(-X.^2 - Y.^2);

mesh(X,Y,Z) [X,Y] = meshgrid(-2:.1:2, -2:.1:2);

Z = X.* exp(-X.^2 - Y.^2);

surf(X,Y,Z)

33

33 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

b. O Comando Plot3

Segue a mesma linha do comando plot bidimensional, mas gera uma visuzlização 3D, veremos um exemplo:

t=0:0.01:6*pi; % intervalo para eixo t

plot3(sin(t), cos(t), t) Segue o resultado:

c. Outros comandos Tridimensionais

3. Exercício de Revisão e Fixação

1. Use os gráficos gerados até aqui e faça variações de tipos de linha, cores e inclua as

informações nos eixos X e Y, além de Título e grade se quiser.

34

34 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Módulo III – MATLAB como Ferramenta de Apoio ao Cálculo 1. Análise Polinomial

1.1. Representação de Polinômios

Este capítulo traz uma série de comandos no MATLAB para a análise polinomial. Primeiro vamos discutir meios de avaliar os polinômios e como trabalhar o seu comportamento.

Uma aplicação deste conceito está na modelagem da altitude e velocidade de um balão. A seguir definiremos as raízes dos polinômios. Polinômios normalmente aparecem em aplicações da Engenharia e na Ciência em geral porque eles constituem ainda bons modelos para representar sistemas físicos.

Como exemplo, vamos tomar o seguinte polinômio: '(�) = 3�( − 0.5�* + � − 6

No MATLAB, um polinômio é representado por um vetor linha contendo seus coeficientes em ordem decrescente, então ficaria assim:

>> p=[3 -0.5 0 1 6]

p =

3 -0.5 0 1 6

Nota-se que os termos faltantes do polinômio, ou seja, aqueles cujo o coeficiente é zero, deve ser inserido na representação do polinômio. 1.2. Raízes de polinômios

Achar as raízes de um polinômio, isto é, os valores para os quais o polinômio é igual a zero, é um problema comum em muitas áreas do conhecimento, como por exemplo, achar as raízes de equações que regem o desempenho de um sistema de controle de um braço robótico, ou ainda equações que demonstram a arrancada ou freada brusca de um carro, ou analisando a resposta de um motor, e analisando a estabilidade de um filtro digital.

Se assumirmos que os coeficientes (a1, a2, ...) de um polinômio são valores reais,

poderemos encontrar raízes complexas. Se um polinômio é fatorado em termos lineares, fica fácil de identificar suas raízes, igualando cada termo a zero.

Um exemplo consiste no polinômio:

'(�) = �� + � − 6, que ao ser fatorado se torna: '(�) = (� − 2). (� + 3)

As raízes da equação são os valores de x para os quais a função f(x) é igual a zero, ou seja, � = 2 e � = −3.

35

35 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Se a função f(x) for um polinômio de grau n, ela terá exatamente n raízes. Estas n raízes podem conter múltiplas raízes ou raízes complexas.

Dada a representação de polinômios discutida no sub-item anteiror, as raízes do polinômio são encontradas usando-se o comando roots do MATLAB.

Já que tanto um polinômio quanto suas raízes são vetores no MATLAB, o MATLAB adota a convenção de colocar os polinômios como vetores linha e as raízes como vetores coluna.

Para ilustrar este comando vamos determinar as raízes do seguinte polinômio: '(�) = �* − 2�� − 3� + 10

No MATLAB:

>> p = [1,-2,-3,10];

r = roots(p)

Lembrando que estes comandos podem ser dados de um só vez, conforme mostrado

abaixo:

>> r = roots([1,-2,-3,10]);

Os valores das raízes serão: 2 + ,, 2 − , e −2.

� Comando Poly

Agora, dadas as raízes de um polinômio, também é possível construir o polinômio associado. No MATLAB, o comando poly é encarregado de executar essa tarefa, onde o argumento do comando poly é o vetor contendo as raízes do polinômio que desejamos determinar.

Sejam as raízes de um polinômio -1, 1 e 3. Para determinar este polinômio, escreveríamos

no MATLAB,

>> a = poly ([-1,1,3]’);

1.3. Cálculo de Polinômios

O cálculo do valor numérico do polinômio -(�) resultante da substituição do vetor � em -(�) é feito no MATLAB através da função polyval. Este comando possui dois argumentos. O primeiro argumento contém os coeficientes do polinômio em questão e o segundo argumento contém o vetor ou a matriz, com os valores para a qual desejamos calcular o polinômio.

Por Exemplo, vamos calcular os resultados da função -(�) = �3 + 4�2 − 6� − 12 , onde � varia de [-4,3] e depois plotar o gráfico desta função. No MATLAB ficaria assim:

>>clear all

>>clc

>>x=linspace(-4,3);

>>p=[1 4 -6 -12];

>>r=polyval(p,x);

>>plot(x,r)

>>title('p(x)=x^3+4x^2-6x-12')

>>xlabel('x')

>>ylabel('p(x)')

36

36 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

O gráfico seria:

ATENÇÃO!!! Quando �for um escalar ou um vetor, polyval consegue calcular o valor da função operando elemento por elemento. Mas quando � for uma matriz usa-se o comando polyvalm

Uma solução alternativa que daria a mesmo resultado seria:

>>clear all

>>clc

>>x=linspace(-4,3);

>>p=x.^3+4*x^2-6*x-12;

>>plot(x,p)

>>title('p(x)=x^3+4x^2-6x-12')

>>xlabel('x')

>>ylabel('p(x)') 1.4. Operações Aritiméticas

Podemos trabalhar com polinômios armazenando seus coeficientes em vetores, e trabalhar

apenas com estes vetores.

· a) Soma e subtração O MATLAB não apresenta um comando específico par somar polinômios. Para somar ou

subtrair polinômios basta somar ou subtrair seus respectivos coeficientes. A soma ou subtração padrão funciona se ambos os vetores polinomiais forem do mesmo tamanho. Supondo os polinômios a seguir: �(�) = �* + 2�� − 3� + 4 e �(�) = �* + 4�� − 9� + 16

37

37 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

A soma seria dada simplesmente pela soma de . + /, e a Subtração por . − /. b) Multiplicação

A multiplicação polinomial é efetuada por meio do comando conv (que faz a convolução entre dois conjuntos). A multiplicação de mais de dois polinômios requer o uso repetido de conv. >> a=[1 2 -3 4];

>> b=[1 4 -9 16];

>> c=conv(a,b)

c =

1 6 -4 -10 75 -84 64

O resultado acima é ⇒ �(�) = �1 + 6�2 − 4�( − 10�* + 75�� − 84� + 64 c) Divisão

No MATLAB a divisão de polinômios é feita através do comando deconv: >> [q,r] = deconv(g,h)

Esse resultado nos diz que g dividido por h nos dá o polinômio de quociente q e resto r. 1.5. Exercícios de Revisão e Fixação

1. Determine as raízes dos seguintes polinômios e plote seu gráfico, com seu eixo apropriado,

com o objetivo de verificar se o polinômio atravessa o eixo � bem nos locais das raízes. a. '(�) = �* − 5�� + 2� + 8 b. 5(�) = �� + 4� + 4 c. ℎ(�) = �2 + 3�( − 11�* + 27�� + 10� − 24 d. ,(�) = �2 − 3�* + 4�� − 1 2. Sistemas de Equações Lineares utilizando Matrizes

O MATLAB permite de uma forma muito simples resolver sistemas de equações lineares

com o uso da função matriz inversa. Para esclarecer, supomos que temos o seguinte sistema de equações lineares:

7 � + 2� − 8 = 1−2� − 6� + 48 = −2−� − 3� + 38 = 1 9 Podemos facilmente resolver da seguinte forma:

1. Criaremos uma matriz A que será composta nesse caso de 3 linhas e 3 colunas com os coeficientes de x, y e z.

2. Criaremos um segunda matriz B que será composta nesse caso de 3 linhas e 1 coluna com as igualdades das 3 expressões.

3. Criaremos por fim uma terceira matriz W que será composta de 3 linhas e 1 coluna com as variáveis x, y e z.

38

38 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

2.1 Exercício de Revisão e Fixação

1. Resolva a seguinte sistema de equações lineares utilizando o MATLAB:

3. Matemática Simbólica

Agora é possível instruir ao MATLAB que manipule expressões matemáticas, sem de fato

usar números, que lhe permitam calcular com símbolos matemáticos, além de números. Esse processo é freqüentemente chamado de matemática simbólica. Aqui estão alguns exemplos de expressões simbólicas:

���(��) 3�� + 5� − 1 : = ;�� ' = < ��;� A toolbox de Matemática Simbólica é uma coleção de funções para o MATLAB usadas para

manipular e resolver expressões simbólicas. Há diversas ferramentas para combinar, simplificar, derivar, integrar e resolver equações diferenciais e algébricas.

Outras ferramentas são utilizadas em álgebra linear para derivar resultados exatos para

inversas, determinantes e formas canônicas e para encontrar os autovalores de matrizes simbólicas, sem o erro introduzido pelo cálculo numérico.

A aritmética de precisão variável que calcula simbolicamente e retorna um resultado para qualquer grau de precisão especificado, também está disponível no MATLAB.

Quando você pedir ao MATLAB para executar alguma operação simbólica, ele então

retornará o resultado para a janela de comando do MATLAB. Por isso, fazer manipulações simbólicas no MATLAB é uma extensão natural do modo como você usa o MATLAB para processar números.

Expressões simbólicas são strings de caracteres ou conjuntos de strings de caracteres que

representam números, funções, operadores e variáveis. as variáveis não têm de ter valores previamente definidos. Equações simbólicas são expressões simbólicas que contêm um sinal de igualdade. A aritmética simbólicas é a prática de resolução dessas equações por meio da aplicação de regras conhecidas e de identidades a determinados símbolos, exatamente da forma que você aprendeu a resolvê-las em álgebra e cálculo. Matrizes simbólicas são conjuntos cujos elementos são expressões simbólicas.

39

39 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

a) Representação e Visualização de Variáveis Simbólicas

3. Determinação das raízes de uma equação com variáveis simbólicas. O comando solve, determina as raízes de uma equação que usa uma variável simbólica.

Por exemplo:

a) Determine as raízes da equação do segundo grau: �� − 2� − 15

>> clear all

>> clc

>> x=sym('x');

>> y=x^2-2*x-15;

>> resp=solve(y)

A resposta no Command Window será:

resp = -3 5 Que são as duas raízes da equação.

b) Encontre o valor de x para que satisfaça a equação 4���(�) + �$%(�) = 1

>> clear all >> clc >> x=sym('x'); >> y=4*cos(x)+sin(x)-1; >> resp1=solve(y)

40

40 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

4. Solução de Derivadas Para o cálculo de derivadas, o MATLAB usa o comando diff(f,n). Esse comando calcula a

derivada n-ésima da função. Para a primeira derivada, o n pode nem ser colocado, vejamos exemplos:

Cálculo da 1a derivada de: ' = �� >> syms x

>> f = x.^2

>> y = diff (f)

Cálculo da 2a derivada de: ' = �� >> syms x

>> f = x.^2

>> y = diff (f,2)

5. Solução de Integrais

Para o cálculo de integrais, o MATLAB usa o comando int (f,i,j). Esse Comando, calcula a integral definida no intervalo de a a b da função, respectivamente os limites inferior e superior. Vejamos exemplos:

Calculo da integral indefinida de:' = �� >> syms x

>> f = x.^2

>> y = int (f)

Calculo da integral de:' = ��, definida no intervalo de [1 , 3]. >> syms x

>> f = x.^2

>> y = int (f,1,3)

6. Solução de Transformadas de Laplace

Para se calcular a Transformada de Laplace de uma determinada função y no tempo, utilizamos o comando Laplace (y) para encontrar a função S no domínio dos números complexos.

Por Exemplo: Vamos calcular a transformada de Laplace de '(=) = 5$>�?, no MATLAB, escreveremos: >> syms t %Esse comando cria a variável t >> Ft = 5*exp(-2*t) % Escrevemos então a expressão da função >> Fs = laplace(Ft) % Essa função calcula a transformada de laplace >> pretty (Fs) % Este comando coloca o resultado Fs de forma mais elegante

41

41 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

7. Solução de Transformadas de Fourier Para se calcular a Transformada de Fourier de uma determinada função y no tempo,

utilizamos o comando fft (y) para encontrar a função no domínio da frequencia.

8. Solução de Transformadas Z Para se calcular a Transformada Z de uma determinada função y no tempo, utilizamos o

comando ztrans (y) para encontrar a função no domínio z discreto.

9. Exercícios de Revisão e Fixação

10. Sinais e Sistemas

Se você pegou este guia apenas porque tem que fazer um trabalho de Sinais e Sistemas, esta é a sua chance! Só espero que outras partes desse guia tenham sido lidas também, porque senão não vai adiantar de muita coisa. Conforme dito anteriormente, o MatLab não é muito forte com expressões literais, mas sim com as numéricas. Então todas as transformadas e funções de transferência serão aplicadas para um conjunto de pontos finitos, e não para outras funções ou sistemas. A tabela abaixo resume as funções mais interessantes. Exemplos com elas virão na seqüência.

42

42 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

A partir da função de transferência encontrada via análise do circuito, obteremos a resposta da tensão no capacitor para entradas impulso, degrau e exponencial decrescente na fonte. >> Hc = tf( [ 5 ] , [ 1 5 ] )

Transfer function:

5 -----

s + 5

>> impulse( Hc ) ;

>> step( Hc ) ;

Os gráficos gerados são esses acima. Confira que as curvas condizem com as expressões teóricas (fica como exercício a demonstração).

Exemplo 2: Análise de uma função de transferência genérica

43

43 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Para obtermos o diagrama de Bode, temos que montar a função de transferência primeiro, como no exemplo anterior. Entretanto, os polinômios do numerador e denominador não estão desenvolvidos (temos a forma fatorada, ao invés disso). A fim de evitar dois trabalhos de distributivas, basta usar a função “poly” apresentada em 4.3, que retorna os coeficientes do polinômio dadas as raízes (cuidado: as raízes duplas devem ser passadas duas vezes!). >> vet_raizesNumerador = [ 0 1 1 10000 ] ;

>> vet_raizesDenominador = [ 10 100 100 1000 ] ;

>> vet_coefPolinomioNumerador = 250 * poly( vet_raizesNumerador ) ;

>> vet_coefPolinomioDenominador = poly( vet_raizesDenominador ) ;

>> H = tf( vet_coefPolinomioNumerador , vet_coefPolinomioDenominador )

Transfer function:

250 s^4 - 2.501e006 s^3 + 5e006 s^2 - 2.5e006 s

------------------------------------------------

s^4 - 1210 s^3 + 222000 s^2 - 1.21e007 s + 1e008

>> bode( H ) ;

Exemplo 3: módulo da transformada de fourier de Rect( t ): >> vet_y = [zeros( 1 , 100 ) ones( 1 , 10 ) zeros( 1 , 100 )] ;

>> vet_Y = fft( vet_y ) ;

>> vet_moduloY = abs( vet_Y ) ;

>> plot( vet_moduloY( 1 : 105 ) ) ;

44

44 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

10. Medidas Estatísticas

Analisar dados coletados de ensaios de engenharia é uma parte importante da avaliação dos mesmos. O alcance da análise estende-se dos mais simples cálculos de dados, como a média aritmética, à mais complexa análise que calcula medidas como o desvio padrão ou variância dos dados. Medidas como estas são medidas estatísticas porque suas propriedades não são exatas. Por exemplo, o seno de 600 é uma medida exata pois o valor é sempre o mesmo toda vez que o calculamos, mas a velocidade máxima que atingimos com o nosso carro é uma medida estatística porque varia dependendo de parâmetros como a temperatura, condições da estrada, e se estamos nas montanhas ou no deserto. Não só podemos medir as propriedades e características de dados estatísticos como também usar o computador para gerar seqüências de valores (números aleatórios) com características específicas. Neste capítulo, aprenderemos a usar as funções para análise de dados do MATLAB e a gerar seqüências de números aleatórios com características específicas.

10.1 Funções para Análise de Dados

Para se estudar o desempenho de duas companhias corretoras de ações, selecionou-se de cada uma delas amostras aleatórias das ações negociadas. Para cada ação selecionada, computou-se a porcentagem de lucro apresentada durante um período de tempo. Os dados estão a seguir:

Os gráficos para os dados das corretoras A e B são mostrados abaixo para podermos

comparar os dois conjuntos de dados:

45

45 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Para decidir qual corretora obteve melhor desempenho, alguns critérios foram considerados

como: � Média mais alta de percentagem de lucro; � Maior percentagem de lucro; � Menor variação de Percentagem de lucro;

É visualmente perceptível que ao longo dos dezoito dias a corretora B apresentou menor

variação de lucro. Facilmente também observaríamos que a Corretora A obteve o maior percentual de lucro de ações. Contudo, não é possível sabermos quantitativamente estas e outras informações como a média de percentagem do lucros das ações para cada corretora apenas com a observação dos gráficos. Para isso temos que calcular as grandezas necessárias para determinar qual corretora obteve melhor desempenho. Seria um pouco trabalhoso se o fizéssemos manualmente. O MATLAB pode perfeitamente auxiliar-nos nestes casos porque contém uma série de funções que contribuem para uma análise mais precisa dos dados. Algumas destas funções podem ser aplicadas ao exemplo das corretoras como as mostradas a seguir: a) Qual a média percentual de lucro das ações durante os 18 dias de observação?

O comando mean: calcula a média aritmética de um grupo de valores. Assim, para as corretoras A e B, temos: >>mean (corretoraA) >>mean (corretoraB)

ans = ans =

55.7222 55.4444

b) Qual corretora alcançou a mais alta percentagem de lucros?

O comando max determina a maior percentagem de lucro em cada corretora. O comando max determina o maior valor de um conjunto de dados. >>max(corretoraA) >>max(corretoraB)

ans = ans =

70 61

E a menor percentagem? As menores margens de lucro obtidas por cada corretora são dadas pelo comando min: >>min(corretoraA) >>min(corretoraB)

ans = ans =

38 50

c) Qual corretora apresenta menor variação de percentual de lucro de ações? As duas corretoras tiveram médias bastante próximas. Contudo, a média, por ser uma

medida representativa de posição central, mascara toda a informação sobre a variabilidade dos dados das corretoras A e B. É necessária uma medida que resuma a variabilidade de dois grupos de valores, permitindo compará-los, conforme algum critério estabelecido. O critério mais comum é aquele que mede a concentração de dados em torno de sua média e, as medidas mais usadas são: o desvio médio e a variância.

46

46 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Desvio Médio, Variância e Desvio Padrão

Sabendo que a média dos valores da corretora A é 55,72, os desvios xi – x são: 10,72; - 4,28; 1.72; - 6,28; 0,72; -14,28 , … Para qualquer conjunto de dados, a soma dos desvios é igual a zero. É mais conveniente usarmos ou o total dos desvios em valor absoluto ou o total dos quadrados dos desvios. Assim, teríamos:

Então, desvio médio e a variância dos dados da corretora A são respectivamente 5,5802 e 58,9183. Para a corretora B, seriam 2,5556 e 9,9084.

A corretora A tem maior variabilidade em porcentagem de lucro de ações, segundo o desvio médio. Isto significa que o percentual de lucro de ações da corretora B é mais homogêneo que o da corretora A.

Para evitar erros de interpretação (a variância é uma medida que expressa um desvio quadrático médio) usamos o desvio padrão (@), que é definido como a raiz quadrada da variância (@�). O MATLAB tem um comando específico para o cálculo de desvio padrão denominada std . Portanto, para o exemplo das corretoras: >> std(corretoraA) >> std(corretoraB)

ans = ans =

7.6758 3.1478

10.2 Números Aleatórios

Números aleatórios não são definidos por uma equação. Contudo, possuem certas características que os definem. Há muitos problemas que pedem o uso de números aleatórios no desenvolvimento de uma solução. Em alguns casos são usados para desenvolver a simulação de um problema complexo. A simulação pode ser testada diversas vezes para analisar os resultados e cada teste representa um repetição do experimento. Também usamos números aleatórios para aproximar seqüências de ruído. Por exemplo, o que ouvimos no rádio é uma seqüência de ruído. Se estivermos testando um programa que use um arquivo de entrada que representa um sinal de rádio, poderíamos gerar ruídos e adicioná-los ao sinal de voz ou a uma música em seqüência para prover mais sinais reais.

47

47 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Função Número Aleatório A função rand no MATLAB gera números aleatórios no intervalo [0,1]. Os números

aleatórios podem ser uniformemente distribuídos no intervalo [0,1] ou podem ser distribuídos normalmente, nos quais média e variância são, respectivamente, 0 e 1. Um valor é usado para iniciar uma seqüência aleatória.

Função Densidade de Probabilidade

Suponha que o ponteiro dos segundos de um relógio elétrico possa parar a qualquer instante por defeitos técnicos. Como há infinitos pontos nos quais o ponteiro pode parar, cada uma com igual probabilidade, cada ponto teria a probabilidade de ocorrer igual a zero. Contudo, podemos determinar a probabilidade de o ponteiro parar numa região entre dois valores quaisquer.

Assim, a probabilidade de o ponteiro parar no intervalo entre os números 9 e 12 é ¼, pois neste intervalo corresponde a ¼ do total. Então, A(270B ≤ � ≤ 360B) = ¼

Sempre poderemos achar a probabilidade do ponteiro parar num ponto qualquer de um intervalo, por menor que seja, compreendido entre os números a e b, de forma que:

A função f(x) é chamada função densidade de probabilidade (f.d.p). A f.d.p. determina a região onde há maior probabilidade de uma variável X assumir um valor pertencente a um intervalo.

Existem alguns modelos freqüentemente usados para representar a f.d.p. de uma variável aleatória contínua como:

a) Modelo Uniforme

Definição: Uma variável aleatória X tem distribuição uniforme entre a e b (a<b) reais, se a sua f.d.p. é dada por:

48

48 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

b) Modelo Normal

A variável X tem distribuição normal com parâmetros E e @�, denotada por X: (E, @�), onde - −∞ < E < +∞ e 0 < @� < +∞, se sua f.d.p. é dada por:

Como a probabilidade de a variável X ocorrer num intervalo, matematicamente, é a área sob

a curva, teríamos valores diferentes de probabilidade para cada valor de µ e de σ. Por isso, usamos

49

49 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

a curva normal padrão ou reduzida (µ = 0, σ2 = 1) – ver figura acima, denotada por N(0,1). Se X:

N(µ,σ2) , então a variável aleatória Z com distribuição N (0, 1) é definida por:

11. Exercícios de Revisão e Fixação 1. Uma certa industria desejando melhorar o nível de seus funcionários em cargos de chefia,

montou um curso experimental e indicou 15 funcionários para sua primeira turma. Os dados referentes à seção a que pertencem e notas obtidas estão na tabela a seguir.

Usando os dados da tabela, determine: a) A média em cada disciplina; b) As menores notas em cada disciplina e os funcionários que as obtiveram; c) Dispor as notas de Administração em forma crescente; d) Comparar os funcionários das seções de Vendas e Técnicas e determinar a maior

nota destes funcionários em cada disciplina;

2. Suponha que as amplitudes de vida de dois aparelhos elétricos, D1 e D2, tenham distribuições N(42, 36) e N(45, 9), respectivamente Se o aparelho é para ser usado por um período de 45 horas, qual aparelho deve ser preferido? E se for por um período de 49 horas?

50

50 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Módulo IV – Iniciação a Programação

1. Algoritmos – Noções Básicas de Programação

Um programa nada mais é do que uma seqüência de comandos (rotina) estabelecida de acordo com um objetivo pré-estabelecido, ou seja, é imprescindível que, antes de iniciar-se um programa, o usuário esteja completamente ciente do que ele deseja que a rotina realiza.

O primeiro passo para o desenvolvimento de uma rotina é a construção de um algoritmo para o programa, onde todos os comandos devem ser explicitados. Uma boa maneira para a construção do algoritmo é a utilização de um fluxograma. A partir do fluxograma, o único trabalho do usuário é ‘traduzir’ o esquema para a linguagem de programação, qualquer que seja esta. Uma simbologia para o desenho do fluxograma é apresentada a seguir:

A seguir, utilizando esta notação, é mostrado um fluxograma com o algoritmo para cálculo do valor da compra de um cliente numa loja com artigos em promoção. O valor do desconta fornecido pela loja varia de acordo com o número de peças adquiridos pelo comprador.

Para implementar esta rotina em qualquer linguagem de programação, basta atribuir os comandos devidos, de forma que o programa execute o algoritmo passo a passo.

51

51 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

2. Arquivos-M: Scripts e Funções

Um dos assuntos mais importantes, a criação de arquivos-M é descrita neste capítulo. O MATLAB é usualmente acionado por um comando. Quando se entra com uma simples linha de comando, o MATLAB a processa imediatamente e mostra o resultado.

O MATLAB também pode executar uma seqüência de comandos que está armazenada em um arquivo.Arquivos de disco que possuem linhas de comando para o MATLAB são chamados arquivos-M em virtude de sua extensão ser do tipo .m. Por exemplo, o arquivo bessel.m contém linhas de comando do MATLAB para avaliar funções Bessel.

Um arquivo-M consiste de uma seqüência normal de linhas de comando do MATLAB, a qual pode fazer uma chamada a outros arquivos-M. Um arquivo-M pode chamar a si mesmo de modo recursivo.Dois tipos de arquivos-M podem ser usados: scripts e funções. Scripts, ou arquivos script, realizam longas seqüências de comandos. Funções, ou arquivos função, permitem adicionar novas funções às funções já existentes. A maior parte do poder do MATLAB se deve ao fato de se poder criar novas funções que resolvam problemas específicos.

Arquivos Scripts

Quando um script é chamado, o MATLAB simplesmente executa os comandos encontrados no arquivo. As linhas de comando de um arquivo script operam globalmente com os dados que estão no espaço de trabalho. Scripts são úteis na realização de análises, solução de problemas, ou no projeto de longas seqüências de comando, o que se torna cansativo para ser feito iterativamente. Como um exemplo,suponha um arquivo chamado fibno.m que possui os comandos:

f = [1 1];

i = 1;

while f(i) + f(i+1) < 1000

f(i+2) = f(i) + f(i+1);

i = i + 1;

end

plot(f)

Digitando a linha de comando fibno faz com que o MATLAB execute os comandos, calculando os 16 primeiros números da série de Fibonacci, e crie um gráfico. Após a execução do arquivo estar completa, as variáveis f e i ficam mantidas no espaço de trabalho.

Arquivos Função

Um arquivo-M que contém a palavra function no início da primeira linha é um arquivo função. Uma função difere de um script pelos argumentos que devem ser passados e pelas variáveis que são definidas e manipuladas, que são locais à função e não podem ser operadas globalmente no espaço de trabalho. O arquivo media.m é um exemplo de um arquivo função que possui as linhas de comando:

52

52 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

function y = media(x)

% Media dos elementos de um vetor ou uma matriz

% Para vetores, media(x) retorna a media dos elementos de x

% Para matrizes, media(x) retorna um vetor contendo a media dos elementos

% de cada coluna da matriz x

[m,n] = size(x);

if m == 1

m = n;

end

y = sum(x)/m;

A existência deste arquivo define uma nova função chamada media. A nova função media é usada como qualquer outra função do MATLAB. Por exemplo, se z é um vetor de inteiros de 1 a 99,

>> z = 1:99;

o valor médio deste é encontrado através do comando

>> media(z)

que resulta em

ans =50

As informações abaixo são para o arquivo media.m, mas o princípio é válido para todos os arquivos função: • A primeira linha declara o nome da função e os argumentos de entrada e saída. Sem esta

linha, o arquivo é um arquivo script, e não um arquivo função. • O símbolo % indica que o restante da linha é um comentário e deve ser ignorado. • As primeiras linhas descrevem o arquivo-M e são mostradas quando você digita help media. • As variáveis m, n e y são locais a media e não aparecem no espaço de trabalhoapós media ter terminado. (Ou, se elas existem, permanecem inalteradas.). • Não é necessário definir os inteiros de 1 a 99 em uma variável de nome x. No exemplo, a função media foi usada com uma variável z. O vetor z que contém os inteiros de 1 a 99 foi passado ou copiado para media onde ele se tornou uma variável local de nome x.

Strings de Texto

Strings de texto são entradas no MATLAB entre aspas simples ( ‘ ). Por exemplo,

>> s = ‘Engenharia’

resulta em

s =

Engenharia

53

53 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

O texto é armazenado em um vetor, sendo um caractere por elemento. Neste caso,

>> size(s)

ans =

1 10

indica que s possui cinco elementos. Os caracteres são armazenados com seus valores ASCII, e a função abs e a função double mostram estes valores:

>> f = abs(s)

f =

69 110 103 101 110 104 97 114 105 97

A função char faz a transformação inversa:

>> char(f)

ans =

Engenharia

Utiliza-se colchetes ou a função strcat para juntar variáveis de texto em strings maiores:

>> s = [s, ‘ Elétrica‘]

s =

Engenharia Elétrica

>> s = strcat(s, ‘ Elétrica‘)

s =

Engenharia Elétrica

3. Condicionais e Loops: “if”, “switch”, “while” e “for”

Este tópico já deve ser bem conhecido para os alunos de Engenharia que já fizeram

Estrutura de Dados. Mesmo assim, vale a pena apresentar a sintaxe e explicar os conceitos. A estrutura “if” executa blocos de comandos somente se a condição for verdadeira. Veja a tabela de possibilidades abaixo:

54

54 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Uma alternativa a estrutura “if” é a estrutura “switch”. Ela é mais interessante para executar comandos com base no valor de uma variável ou expressão.

switch expressao

case valor1

bloco1

case { valor2 , valor3 }

bloco2

otherwise

bloco3

end

No caso acima, o bloco 1 é executado se o valor da expressão for “valor1”. Caso contrário, se for “valor2” OU “valor3”, o bloco 2 é executado. Caso contrário, o bloco 3 é executado. Perceba que,

diferente do que ocorre na linguagem C, os blocos 2 e 3 não são executados caso o valor 1 seja

verdadeiro! Não há, portanto, necessidade de breaks!

Para executar o mesmo bloco de comandos mais de uma vez, usamos as estruturas de loop (laço). No caso da estrutura “while”, o bloco é executado enquanto a condição for verdadeira.

CUIDADO: se a condição for sempre verdadeira, o bloco rodará eternamente, até que alguém aborte o programa

while condicao

bloco

end

Finalmente, a estrutura “for” é usada para executar um bloco de comandos numa quantidade definida de vezes. Através de um contador (ou “iterador” Æ por isso a letra “i” é usada) declarado no início como um vetor, estabelecemos quantas vezes o bloco será executado. Ao mesmo tempo, declaramos os valores do contador ao longo dos ciclos. Observe alguns casos possíveis:

55

55 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Para encerrar este tópico, é muito importante frisar que o uso de “for” e “while” pode e deve ser evitado na maioria dos casos. Isso porque o MatLab possui funções otimizadas para receber vetores e matrizes, efetuando assim o cálculo em todos os elementos de uma só vez! Usar loops e chamar a função para cada elementos individualmente deixa o código mais extenso e complicado, e pode até retardar o processamento.

A tabela abaixo mostra alternativas para quem está acostumado demais com algoritmos da linguagem C:

4. Funções de entrada e Saída

As funções de E/S (Entrada/Saída) de arquivo do MATLAB que permitem a leitura e a escrita em formato diferente ao gerados pelo mesmo são descritas neste capítulo.

As funções de E/S de arquivo do MATLAB permitem a leitura de dados coletados em outro formato diretamente pelo MATLAB, ou a escrita de dados gerados pelo MATLAB no formato requerido por outro programa ou dispositivo. As funções leem e gravam arquivos de texto formatados e arquivos binários de dados.

Abrindo e Fechando Arquivos

Antes de se ler ou escrever em um arquivo, deve-se abri-lo com o comando fopen,especificando o arquivo a ser aberto e a string de permissão. Por exemplo,

>> fid = fopen(‘arquivo.txt’,’r’) � abre para leitura o arquivo “arquivo.txt”

As strings de permissão disponíveis são:

56

56 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

• ’r’ para leitura • ‘w’ para gravação • ‘a’ para atribuição • ‘r+’ tanto para leitura como para gravação

Outras strings de permissão podem ser obtidas com o comando help fopen.

A função fopen retorna um identificador de arquivo, que é um inteiro positivo atribuído ao arquivo pelo sistema operacional. Este identificador de arquivo é basicamente um atalho para se referenciar o arquivo. As funções de E/S de arquivo do MATLAB utilizam o identificador como argumento para identificar o arquivo aberto para leitura, escrita ou encerramento.

Se o arquivo não pode ser aberto, fopen retorna -1 como identificador. É aconselhável testar o identificador cada vez que um arquivo é aberto.

Um segundo valor que é retornado pode fornecer informação adicional sobre erros. Por exemplo, se MATLAB não encontra o arquivo arquivo.txt, o comando

>> [fid, message] = fopen(‘arquivo.txt’,’r’)

atribui -1 para fid, e message recebe uma string com a forma abaixo

No such file or directory.

Uma vez aberto, o arquivo fica disponível para leitura e gravação. Quando se termina a leitura ou a gravação, usa-se fclose para fechar o arquivo. Por exemplo,

>> status = fclose(fid)

fecha o arquivo associado com o identificador fid, e

>> status = fclose(‘all’)

fecha todos os arquivos abertos. Ambas as formas retornam 0 se esta operação for realizada com sucesso, ou -1 se algo de errado acontecer.

Leitura de Arquivos

A função fread lê arquivos de dados binários. Na sua forma mais simples, ele lêum arquivo

inteiro em uma matriz. Por exemplo, >> fid = fopen(‘texto.txt’,’r’);

>> A = fread(fid);

>> status = fclose(fid);

lê todos os dados do arquivo ‘texto’ como caractere, e os escreve em uma matriz A.

57

57 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Dois argumentos opcionais a fread fazem o controle do número de valores lidos e a precisão de cada valor. >> fid = fopen(‘arquivo.txt’,’r’);

>> A = fread(fid,100);

>> status = fclose(fid);

lê os 100 primeiros valores de dados em um vetor coluna A. Substituindo o número 100 pelas dimensões de uma matriz [10,10], faz com que sejam lidos os mesmos 100 elementos, armazenando-os em uma matriz 10x10. E >> A = fread(fid,Inf)

lê até o final do arquivo, preenchendo a matriz A como um vetor coluna. Omitir o tamanho do argumento produz o mesmo efeito. Escrevendo Arquivos de Texto Formatados e Strings

A função fprintf converte dados em strings de caractere e os mostra na tela ou em um arquivo. O formato de saída é definido por um especificador de conversão e por um texto. Os especificadores de conversão controlam a saída dos elementos de uma matriz.Os textos são copiados diretamente. Os especificadores são precedidos pelo caractere %; conversões comuns incluem:

%e - para notação exponencial

%f - para notação de ponto fixo

%g - que seleciona automaticamente o menor entre %e e %f

Campos opcionais no especificador de formato controlam o tamanho e a precisão do campo. Por exemplo: >> x = [0:0.1:1];

>> y = [x; exp(x)];

>> fid = fopen(‘exptable.txt’,’w’);

>> fprintf(fid,’Exponential Function\n\n’);

>> fprintf(fid,’%6.2f%12.8f\n’,y);

>> status = fclose(fid);

cria um arquivo de texto contendo uma pequena tabela para a função exponencial. A primeira chamada a fprintf escreve o título, seguido por dois comandos ENTER, o qual é definido por \n. A segunda chamada escreve a tabela propriamente dita. As strings de controle de formato definem o formato de cada linha da tabela como:

� um valor de ponto fixo de seis caracteres com duas casas decimais � dois espaços � um valor de ponto fixo de doze caracteres com oito casas decimais

58

58 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Lendo Arquivos de Texto Formatados e Strings

A função de entrada de texto do MATLAB, fscanf, é similar à função fprintf, entretanto a função fscanf possui como argumento o identificador para o arquivo de texto aberto, e uma string de controle do formato contendo caracteres e especificadores de conversão, nesta ordem. Os especificadores para fscanf são precedidos pelo caractere %; conversões comuns incluem %s - para converter uma string %d - para converter um número decimal %f - para converter um valor em ponto flutuante O exemplo a seguir faz a leitura do arquivo com os dados exponenciais escrito anteriormente: >> fid = fopen(‘exptable.txt’,’r’);

>> title = fscanf(fid,’%c’,20)

>> [table,count] = fscanf(fid,’ %f %f ‘,[2,11]);

>> table = table’

>> status = fclose(fid);

A linha do título combina com o especificador %c na primeira chamada à fscanf. A segunda chamada entra com a tabela de valores. count retorna o número de valores combinados.

59

59 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Módulo V – Integração com o Excel e Aplicações Independentes 1. ExcelLink

Para facilitar o trabalho de fluxo de dados entre o MATLAB e programas do MS-Office, foi criado o ExcelLink, uma macro desenvolvida para o MS-Excel que permite o envio e recebimento de dados do MATLAB. Executando o arquivo excllink.xla o MS-Excel é executado, surgindo um conjunto de botões aparece na barra de ferramentas. O MATLAB deve ser executado a partir do Excel para ativar o link. Pode-se enviar dados para o MATLAB selecionando uma ou várias células e usando o botão putmatrix, então aparecerá uma janela pedindo o nome da variável a ser armazenada com estes dados. Para receber dados deve-se utilizar o botão getmatrix e informar a variável onde estão armazenados os dados que quer-se buscar. É possível ainda utilizar funções do MATLAB no Excel. Para tanto, usa-se o botão evalstring. As variáveis de saída devem ser armazenadas no workspace do MATLAB, então deve-se atribuir um nome à variável para depois importá-la para o Excel.

2. Aplicações Independentes

Ferramenta GUIDE

Esta é uma mais uma das ferramentas poderosas do MATLAB, que permite a construção

de uma interface amigável para o usuário e o que é melhor, de uma forma amigável, ou seja, utilizando uma interface gráfica, o Graphical User Interface (GUI), para criar outras.

60

60 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Conceitos Básicos O Handle Graphics é uma estrutura orientada para objeto que permite a criação e

manipulação de gráficos e imagens. Os Object Handles podem ser considerados como indicadores únicos atribuídos pelo MATLAB para cada objeto, permitindo desta maneira referenciar estes objetos para manipulá-los. Existem 3 formas de se obter um handle:

a) na criação do objeto b) através de comandos utilitários c) utilizando o findobj

Para o caso de se desejar obter o handle do objeto na sua criação, basta armazená-lo um uma variável, pois os handles são retornados automaticamente pelas suas funções de criação. >> p = plot([1:10],sin(2*[1:10]));

Neste caso o handle do gráfico da função seno ficará armazenado na variável p,

portanto se desejar-mos fazer qualquer modificação no gráfico utilizando seu handle, basta utilizar p. A segunda forma de se obter um handle é via comandos utilitários: 1) gcf retorna o handle da figura corrente 2) gca retorna o handle dos eixos correntes 3) gco retorna o handle do objeto corrente 4) gcbf obtém handle para CallBack Figure 5) gcbo obtém handle para CallBack Object

A terceira forma é através do comando findobj, que procura na figura o objeto através de propriedades específicas do objeto de interesse (como o TAG do objeto, por exemplo) e retorna o seu handle.

Este comando irá procurar através de toda a hierarquia de objetos na figura até encontrar o objeto que possua as propriedades especificadas, porém, esta busca pode ser mais rápida se também for informado o objeto a partir do qual se deve iniciar a busca. A sua sintaxe é a seguinte: >> var_handle = findobj(ponto_início,propriedade,valor)

Exemplo: >> plot([1:10]);

>> h = findobj(gca, 'Color',[0 0 1]);

>> set (h, ‘Color’, [1 0 0]);

Neste exemplo, o handle da linha do gráfico é identificado pelasua cor azul e armazenado

em h, e em seguida, é atribuída a cor vermelha para a mesma.

Como visto no exemplo, uma das formas de manipularmos objetos gráficos é através do comando set, enquanto que para pegarmos valores específicos de uma propriedade de um objeto, utiliza-se o comando get, em ambos os casos o handle funciona como “endereço” onde será feita a ação.

61

61 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

Uma maneira mais simples de trabalhar com os objetos gráficos é através do Graphical User Interface (GUI) que é executado através do comando guide O que é uma GUI?

É uma ferramenta que permite construir interfaces gráficas de interação com o utilizador. A GUI torna os programas mais fáceis de usar, pois fornecem uma aparência consistente e com controles intuitivos (botões, réguas, caixas de listagem, menus, etc). Projetando uma GUI

É muito importante planejar a GUI que você deseja construir, antes de começar o programar. Um projeto de GUI pode ser feito com papel e caneta, como um rascunho da interface que você deseja que o programa tenha. A idéia de um esboço de uma GUI:

O rascunho em um papel é simples, mas independente da complexidade da GUI, é sempre um bom meio de começar.

62

62 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação

MATLAB Compiler Normalmente um M-file, pode ser compartilhado com outras pessoas de um ambiente corporativo ou de uma instituição de ensino, quer seja internamento ou externamente a esses ambientes, desde que essas pessoas também disponham de uma licença MATLAB.

Entretanto como podemos compartilhar essas aplicações (M-files) caso os usuários não tenham uma licença MATLAB? A solução seria criar aplicações stand-alone que funcionem de forma independente sem precisar do MATLAB.

O MATLAB Compiler é a plataforma principal de criação de aplicações Stand-alone

convertendo programas MATLAB, sendo possível também a criação de aplicações C++ que podem ser integradas em outros softwares.

Após criado o programa MATLA, faremos uso do comando deploytool.

63

63 MATLAB Básico – Conhecimento da Ferramenta Computacional e Iniciação a Programação