Você está na página 1de 93

Curso de MATLAB

Arthur Neves de Paula


Básico
Janelas do MATLAB
Janela Propósito Janela Propósito

Command Janela principal, Figure Apresenta o(s)


Window inicializa variáveis resultado(s) dos
e executa comandos gráficos
programas
Editor Permite a edição e Help Ajuda na utilização
a depuração de do programa
rotinas (scrip files)
e funções
Command History Apresenta o Workspace Disponibiliza
histórico dos informações sobre
comandos mais as variáveis que
recentes digitados estão em uso
na janela
Command
Window
Current Directory Exibe os arquivos presentes no diretório ou na pasta atual
Command Window
• Digitando vários comandos em uma linha com
o uso de vírgula
• Uso de ; e %
• Comandos clc, clear e close
• Operações matemáticas com escalares
2
3 2373 552
Exemplo: 2 + 7 + +
2 2
Ordem de precedência
Precedência Operação matemática
Mais alta Parênteses. Quando ocorrem
parênteses aninhados, os
parênteses mais internos são
executados em primeiro lugar.

Segunda Exponenciação
Terceira Multiplicação e divisão
Mais baixa Adição e subtração
Formatos padronizados dos
números
Comando Descrição
format short Notação ponto fixo com 4
decimais
format long Notação ponto fixo com 14
decimais
format short e Notação científica com 4
decimais
format long e Notação científica com 15
decimais
Formatos padronizados dos
números
Comando Descrição

format bank Dois dígitos decimais

format compact Elimina espaços para permitir


que mais linhas de informação
sejam mostrados na tela

format loose Adiciona espaços entre linhas

Preferences>Command Window
Funções matemáticas elementares
Função Descrição Função Descrição
sqrt(x) Raiz quadrada exp(x) Exponencial 𝑒 𝑥
abs(x) Módulo log(x) ln(x)
factorial(x) x! log10(x) log(x)

Funções trigonométricas
sin(x), cos(x), tan(x), cot(x)

asin(x), acos(x), atan(x), acot(x)

sinh(x), cosh(x), tanh(x), coth(x)


Exemplos:
Arranjos
Criando vetores
• Vetor linha: digitando os valores entre colchetes.
• Vetor coluna: digitando os valores entre colchetes separando-
os por ; ou enter.
• Obs: Os elementos podem ser definidos por expressões
matemáticas. Ex: a=2;b=[a a^2 a^3]
• Elementos espaçados por um fator constante q
Nome_variável = xi:q:xf
• Comando linspace(xi,xf,n)
Criando Matrizes
• Nome_variável = [1ª linha de elementos; 2ª linha de
elementos; 3ª linha de elementos; ...; última linha de
elementos]

• As linhas podem ser geradas utilizando-se vetores por meio do


comando linspace ou da notação para criação de vetores com
incremento constante.
Criando Matrizes
Comando Descrição
zeros(m,n) Matriz mXn cujos elementos
são 0
ones(m,n) Matriz mXn cujos elementos
são 1
eye(n) Matriz identidade de n linhas e
n colunas
Trabalhando com arranjos
• Operador transposição (‘)
Exemplo: A=[3 2 5];A’
• Referência a um elemento do arranjo
• Vetor: A(3)=5
• Matriz: A(1,1)=3
Dois pontos (:) Referenciando
elementos de arranjos
• Vetor:
• V(:) referencia todos os elementos do vetor V
• V(m:n) referencia os elementos entre as posições m e n do
vetor V
Exemplo: V=[1 2 4 8 16],V(2:4)
• Matriz:
• M(:,n) referencia todas as linhas da coluna n
• M(n,:) referencia todas as colunas da linha n
• M(:,m:n) referencia todas as linhas entre as colunas m e n
• M(m:n,:) referencia todas as colunas entre as linhas m e n
• M(m:n,p:q) referencia os elementos da matriz M entre as
linhas m e n e as colunas p e q
Adicionando elementos a um
vetor
Exemplo: v=1:3
v=123
v(6)=6
v=123006
O MATLAB adiciona zeros nas posições 4 e 5
v(7:10)=10:-1:7
v= 1 2 3 0 0 6 10 9 8 7
Adicionando elementos a uma
matriz
Exemplo: M = [1:3;4:6;7:9]
B(3,3)=18
MB = [M B]

Eliminando elementos
Mesmo princípio de adicionar, porém usando []
Exemplo:
MB(:,4:6)=[]
Funções nativas para
manipulação de arranjos
Comando Descrição
length(A) Número de elementos de A
size(A) Dimensão de A
diag(v) Quando v é um vetor, cria uma
matriz quadrada contendo os
elementos de v na diagonal
principal
diag(A) Quando A é uma matriz
quadrada, cria um vetor coluna
com os ele
Exemplos:
Operações com
arranjos
Adição e subtração
Matrizes de mesma dimensão

Multiplicação de arranjos
M1axn*M2nxb
Em geral A*B≠B*A
Matriz inversa
Comando inv(A)
A*inv(A)=I
Uma matriz possui inversa se ela é quadrada e seu
determinante é diferente de zero

Determinante
Comando det(A)
Divisão à esquerda
Resolve equações do tipo AX=B
X=A\B

Divisão à direita
Resolve equações do tipo XC=D
X=D/C
Exercícios
Operações escalares envolvendo
arranjos
Símbolo Descrição
.* Multiplicação escalar
.^ Exponenciação escalar
./ Divisão escalar
Funções nativas para cálculos com
arranjos
Função Descrição
mean(A) Retorna o valor médio do vetor
max(A) Retorna o maior elemento do vetor
[d,n]=max(A) d recebe o maior elemento e n a posição de d
min(A) Retorna o menor elemento do vetor
[d,n]=min(A) d recebe o min elemento e n a posição de d
sum(A) Retorna a soma dos elementos do vetor
Função Descrição
sort(A) Ordena os elementos de A na ordem
crescente
median(A) Retorna o valor mediano de A
std(A) Retorna o desvio padrão de A
det(A) Retorna o determinante de A
dot(A,B) Determina o produto escalar dos vetores A.B
cross(A,B) Determina o produto vetorial dos vetores AxB
inv(A) Retorna a inversa de A
Geração de
números aleatórios
Simulação de muitos processos físicos e aplicações em
engenharia requerem um número ou um conjunto de
números aleatórios
Comando rand
Comando Descrição
rand Gera um valor aleatório de 0 a 1
rand(1,n) Gera um vetor linha com n elementos aleatórios
de 0 a1
rand(n) Gera uma matriz quadrada de dimensão n com
elementos aleatórios de 0 a1
rand(m,n) Gera uma matriz mxn com elementos aleatórios
de 0 a 1
randperm(n) Gera um vetor linha contendo n elementos que
são a permutação aleatória de inteiros de 1 até n
O comando rand gera elementos de 0 a 1. Para criar elementos
entre A a B basta fazer

(B-A)*rand + A

Exemplos:
• Gerar um número aleatório entre 20 e 30.
>>10*rand+20
• Gerar um vetor com 10 elementos com valores aleatórios
entre -5 e 10
>>15*rand(1,10)-5
• Gerar uma matriz 3 x 3 contendo apenas números inteiros
entre 1 e 9
>>round(8*rand(3,3)+1)
Rotinas (M-Files)
Rotinas

• Criando e salvando uma rotina


• Rodando uma rotina

Exemplos\Exemplo_4_1.m
Entradas em Rotinas
• Variáveis globais são aquelas que, uma vez criadas em uma
parte do MATLAB são reconhecidas em todas as outras partes
do programa.
• Quando uma rotina é executada, as variáveis usadas nos
cálculos dentro do arquivo devem ser inicializadas. A
atribuição de um valor a uma variável pode ser feita de três
modos diferentes.
1. A variável foi declarada e inicializada dentro da
rotina

2. A variável foi declarada e inicializada na janela


Command Window
Exemplos\Exemplo_4_2.m
3. Uso do comando input

• A variável é declarada na rotina, mas a especificação do valor


é feita na janela Command Window quando a rotina for
executada.

• Comando input:
nome_da_variável = input (‘String com a mensagem a ser
exibida na janela Command Window’)

Exemplos\Exemplo_4_3.m
Comando disp
• O comando disp exibe o conteúdo de uma variável ocultando o
nome da mesma e/ou mostra strings na forma de texto.

disp(nome_da_variável)
ou
disp(‘string de texto’)

Exemplos\Exemplo_4_4.m
Comando fprintf
• Usado para gerar saídas (textos e dados).

• Ao contrário do disp, a saída pode ser formatada pelo usuário.

• Textos e dados podem ser combinados e exibidos em uma


linha.
Usando o comando fprintf para
exibir textos
• Forma geral
fprintf(‘ texto a ser exibido ‘)

• Caracteres para modificação do modo de exibição do texto.

Caracteres Finalidade
\n Quebra de linha
\b Retrocesso
\t Tabulação
Combinando texto e números
• A combinação de texto e número na função fprintf é feita no
seguinte formato:

fprintf(‘texto %f texto adicional’, nome_da_variável)

• % -> define onde o ponto onde o número é inserido no texto.


• f -> Elemento de formatação
Elementos de formatação
Elemento Descrição
e Notação científica com e minúsculo
E Notação científica com E maiúsculo
f Ponto flutuante
g Menor entre “f“ e “e”
G Menor entre “f” e “E”
i Inteiro

• Adicionar .x antes do elemento de formatação define o número


de casas decimais que será exibido. Ex: %.2f
• Usando o comando fprintf para mais de uma variável:
Exemplos\Exemplo_4_5.m

• O comando fprintf é “vetorizado”. Significa que, se um arranjo


do tipo vetor ou matriz estiver incluído no comando, haverá
repetição desse comando até que o último elemento do vetor
seja exibido na tela. Se for uma matriz, os dados serão exibidos
coluna por coluna.
Exemplos\Exemplo_4_6.m
Importando tabelas
Import Wizard
Gráficos 2D
Comando plot
O comando plot é utilizado para criação de gráficos
bidimensionais. Forma padrão do comando:
plot(x,y)
x e y devem ser vetores de mesma dimensão.

Exemplos\Exemplo_5_1.m
Especificadores de linha
plot(x,y,’Especificadores_de_linha’)

Estilo de linha Especificador Estilo de linha Especificador


Sólida(padrão) - Pontilhada :
Tracejada -- Traço-ponto -.
Cor da linha Especificador Cor da linha Especificador
Vermelha r Magneta m
Verde g Amarelo y
Azul b preto k
Ciano c Branco w
Marcador Especificador Marcador Especificador
Sinal + Quadrado s
Círculo O Diamante d
Asterisco * Estrela 1 p
Ponto . Estrela 2 h

Exemplos\Exemplo_5_2.m
Gráfico de uma tabela de dados
Ano 1988 1989 1990 1991 1992 1993 1994
Venda 8 12 20 22 18 24 27

Exercício: Plotar esses dados em um gráfico com linha preta


tracejada e marcadores tipo asterisco.
Gráfico de uma função
1
𝐺 𝑡 = 𝑒 −2.𝑡 sin 𝑡
Exemplos\Exemplo_5_3.m

Exercício: Plotar o gráfico da função abaixo.


1
𝑦 𝑥 = , −100 ≤ 𝑥 ≤ 100
𝑥
Plotando gráficos múltiplos em
uma mesma função

Exercício: Trace o gráfico da função y = 𝑥 3 − 26𝑥 + 10,


juntamente com a primeira e a segunda derivadas dessa
função.

Usar o comando hold on

Usar o comando plot( x , y , x , y’ , x , y’’)


Formatando um gráfico
• É possível incluir em um gráfico títulos para os eixos ,
título do gráfico, legenda, grids, faixa de valores para as escalas
e caixas de texto.

• A formatação pode acontecer em dois momentos: após o


comando plot ou usando, interativamente, o editor das
propriedades dos eixos (menu edit).
Os comandos xlabel e ylabel
Servem para rotular os eixos x e y da figura.
xlabel(‘texto’)
ylabel(‘texto’)

Os comandos title
Adiciona um título ao gráfico.
title(‘texto’)
Os comandos text
Adiciona texto ao gráfico.
text( x , y ,‘texto’)
gtext(‘texto’)

• O comando text insere uma caixa de texto que se inicia nas


posições indicadas por x e y.
• Executando gtext a janela Figure Window é aberta e o usuário
é solicitado a especificar a posição da caixa de texto com o
mouse.
O comando legend
Adiciona legenda ao gráfico.
legend(‘string1’ , ‘string2’ , ... , pos )
As strings devem entrar na ordem em que os gráficos foram
criados. O campo pos especifica um número opcional onde a
legenda do gráfico deve ser inserida.
pos Posição da legenda
-1 À direita da figura, fora do contorno do gráfico.
0 Dentro da figura, numa posição otimizada.
1 Canto direito superior do gráfico (default).
2 Canto esquerdo superior do gráfico.
3 Canto esquerdo inferior do gráfico.
4 Canto direito inferior do gráfico.
O comando axis
Permite que a faixa de valores mostrada no gráfico seja
modificada.

• axis([xmin , xmax , ymin , ymax]) indica os limites dos eixos.

• axis equal Configura escalas iguais para x e y.

• axis square Configura as escalas x e y, de modo que a


região do gráfico seja um quadrado.

• axis tight Configura os limites dos eixos para a faixa


de dados.
Exercício:
A posição x de uma partícula, em função do tempo, que se
move ao longo de uma reta é dada por:
𝑥 𝑡 = 0.4𝑡 3 − 2𝑡 2 − 5𝑡 + 13
Construa os gráficos da posição, velocidade e aceleração em
função de t (0<t<7s). Mostre os valores da posição, velocidade e
aceleração de um em um segundo utilizando o comando fprintf.

*Resposta Exemplos\Exemplo_5_4.m
Funções

Entrada Função Saída


• Uma função declarada e salva como um arquivo no MATLAB
pode ser chamada em qualquer parte do MATLAB.
• Programas muito grandes podem ser segmentados em blocos
menores passíveis de serem testados independentemente.
• A função pode constituir em uma única expressão matemática
ou em um conjunto de expressões complexas, envolvendo uma
série de cálculos.
• Tanto a saída quanto a entrada podem possuir uma ou várias
variáveis e cada variável pode ser um escalar, um vetor ou uma
matriz.
Estrutura de uma função
Linha de declaração da função

• A primeira linha executável no arquivo deve ser a linha de


declaração da função.
• Define o arquivo como uma função.
• Define o nome da função.
• Define o número e a ordem das variáveis de entrada.
• Especifica o que a função irá retornar.
Argumentos de entrada e saída
Linha de declaração da função Comentários
function [mpag,tpag] = Três argumentos de entrada e
emprestimo(quantia,taxa,anos) dois parâmetros de saída.
function [A] = RetArea(a,b) Dois argumentos de entrada e um
parâmetro de saída.
function A = RetArea(a,b) Função com um único parâmetro
de saída pode ser digitada sem os
colchetes.
function [V,S] = EsferaVolArea(r) Uma variável de entrada e duas
de saída.
function trajetória(v,h,g) Três parâmetros de entrada e
nenhum de saída.
A linha de descrição da função (linha
H1) e as linhas de comentários
• Escritas logo após a linha de declaração da função.
• A linha H1 geralmente é a primeira linha de comentário da
função e recomenda-se que ela faça menção ao nome da
função em caixa alta, enfatizando a funcionalidade da mesma.
• Quando o usuário digita lookfor palavra-chave na linha do
prompt da janela Command Window, o MATLAB procura a
palavra-chave referida em todas as linhas H1 de todas as
funções nativas e personalizadas.
Variáveis locais versus variáveis
globais
• Todas as variáveis de uma função são locais, isto é, os valores
dos parâmetros de entrada e saída estão definidos e são
reconhecidos somente dentro da estrutura da função.
• Uma função pode conter variáveis com nomes idênticos às
variáveis declaradas na janela Command Window ou em uma
rotina.
• Para declarar uma variável global é necessário especificar o
comando global utilizando a seguinte sintaxe:

global Nome_var_1 Nome_var_2


Variáveis globais
• A variável tem que ser declarada global em toda função que o
usuário quiser que ela seja reconhecida, em todas as partes do
MATLAB. Desse modo, a variável torna-se comum a essas
funções.
• O comando global deve aparecer antes de a variável ser
utilizada.
• O comando global deve ser digitado na janela Command
Window e/ou dentro da rotina, para que a variável seja
reconhecida na área de trabalho (workspace).
• O valor da variável pode ser atribuído ou modificado em
qualquer parte comum do domínio de validade dessa variável.
• É recomendado usar nomes extensos (ou usar letras
maiúsculas) para variáveis globais, de maneira a distingui-las
das variáveis locais.
Funções inline
• Funções que são utilizadas para resolver problemas
matemáticos simples ou complexos.
• Todas as funções inline são criadas por meio do comando
inline, seguindo a sintaxe:
Nome_função = inline(‘expressão matemática como string’)
• As expressões não podem conter variáveis previamente
inicializadas.
• Uma vez definida uma função inline é possível chamá-la
pelo nome, atribuindo-lhe valores aos argumentos.
• Uma função inline pode ser utilizada como argumento de
outras funções.
• Função inline com várias variáveis independentes são criadas
seguindo a seguinte sintaxe:
Nome_função = inline( ‘expressão matemática’ , ‘var1’ , ’ var2’ )
• Exemplos:
1. 𝐴 = 𝜋𝑟 2
>>A=inline(‘pi*r^2’);

2. ℎ = 𝑎2 + 𝑏²
>>h=inline(‘sqrt(a^2+b^2)’);
Exercícios:
*Resposta:
Exemplos\Exemplo_6_1.m
Operadores Lógicos
e Relacionais
Operadores relacionais

Operador relacional Descrição


< Menor que
> Maior que
<= Menor que ou igual a
>= Maior que ou igual a
== Igual a
~= Diferente de
• Operadores relacionais são utilizados juntamente com
operadores aritméticos dentro de expressões matemáticas. O
resultado pode ser utilizado em outras operações
matemáticas, no endereçamento de arranjos ou para
controlar o fluxo do programa no MATLAB.
• Quando dois números são comprados, o resultado será 1
(verdadeiro) se, de acordo com o operador relacional, a
comparação for verdadeira, e 0 (falso) se a comparação for
falsa.
• Se dois escalares estão sendo comparados, o resultado é o
escalar 1 ou 0.
• Se dois arranjos estão sendo comparados, a comparação é
feita elemento por elemento do arranjo e o resultado é um
arranjo lógico cuja dimensão é a mesma dos arranjos
originais.
• Se um escalar estiver sendo comparado com um arranjo, o
escalar será comparado com cada elemento do arranjo e o
resultado é um arranjo lógico de acordo com a posição de
cada elemento no arranjo.
Vetores lógicos

• Um vetor lógico pode ser utilizado no endereçamento de


outros vetores. Quando um vetor lógico é utilizado para tais
finalidades, extrai do vetor endereçado os elementos nas
posições onde o vetor lógico tem 1.
• Os vetores e arranjos numéricos de 0s e 1s não funcionam
como vetores e arranjos lógicos. Arranjos numéricos não
podem ser utilizados para endereçar outros arranjos.
• Arranjos lógicos podem ser utilizados em operações
aritméticas. Uma vez utilizado, o arranjo lógico torna-se
numérico.
Ordem de precedência
• Em uma expressão matemática que inclua operadores
relacionais e aritméticos, as operações aritméticas precedem
todas as operações relacionais. Os operadores relacionais têm,
entre eles, igual precedência e são avaliados da esquerda para
a direita.
Operadores lógicos

Operador lógico Nome


& AND
Exemplo: A&B
| OR
Exemplo: A|B
~ NOT
Exemplo: ~A
• Operadores lógicos recebem números como operandos.
Qualquer número diferente de zero é verdadeiro e apenas o
número zero é falso.
• O resultado de expressões matemáticas com operadores
lógicos podem ser utilizados em outras operações matemáticas,
no endereçamento de arranjos ou para controlar o fluxo do
programa no MATLAB.
• As operações AND e OR podem agir em escalares puros,
arranjos puros ou entre um escalar e um arranjo.
• A operação lógica NOT possui apenas um operando.
Ordem de precedência
Precedência Operação
1 (Mais alta) Parênteses
2 Exponenciação
3 Lógica NOT (~)
4 Multiplicação e divisão
5 Adição e subtração
6 Operadores relacionais (<,>,<=,>=,==, ~=)
7 Lógica AND (&)
8 (Mais baixa) Lógica OR (|)
Operadores Lógicos de curto-circuito

• O operador lógico de curto-circuito AND é executado usando


&& e o curto-circuito OR é executado usando ||. Os operadores
lógicos de curto circuito são geralmente mais eficientes do que
os tradicionais operadores lógicos porque eles testam a
segunda porção da expressão quando for necessário.
Exemplos:
• Função degrau unitário:
u=inline(‘t>=0’,’t’);
1, 𝑡≥0
u(t)=
0, 𝑡<0
plot(t,u(t))

• Função realizável (sinal causal): f(t).u(t)


g=inline(‘exp(-t).*cos(2*pi*t).*(t>=0)’,’t’)

• Função descontínua:
f=inline(‘(t>=-1.5&t<0)+exp(-2*t).*(t>=0)’)
Funções lógicas nativas do MATLAB
Função Descrição
and(A,B) Equivalente a A&B
or(A,B) Equivalente a A|B
not(A) Equivalente a ~A
xor(a,b) Ou Exclusivo. Retorna verdadeiro se houver
desigualdade entre os operandos.
all(A) Retorna verdadeiro se todos os elementos de um
vetor A forem verdadeiros. Retorna falso se um ou
mais elementos forem falsos. Se A for uma matriz,
trata as colunas de A como vetores.
any(A) Retorna verdadeiro se qualquer elemento de A for
verdadeiro. Retorna falso se todos os elementos de
A forem falsos.
Função find

Função Descrição
find(A) Se A for um vetor, retorna os índices dos
elementos diferentes de zero.
find(A>d) Se A for um vetor, retorna o endereço dos
elementos que são maiores que d
(qualquer operador relacional pode ser
utilizado).
Exercício

*Resposta:
Exemplos\Exemplo_7_1.m
Sentenças
Condicionais
A estrutura if-end
A estrutura if-else-end
A estrutura if-elseif-else-end
A estrutura if-elseif-else-end

• Deve ser enfatizado que é possível aninhar muitas sentenças


elseif na estrutura e vários grupos de comandos podem ser
adicionados dentro desse ninho. Isso possibilita testar muitas
condições num único programa. Além disso, o comando else é
opcional. Isso significa que, caso sejam aninhadas várias
sentenças elseif qualquer condicional verdadeira terá os
respectivos comandos executados. Caso contrário, não haverá
execução de comandos, a menos que haja um else na estrutura.
Laços (loops)
Laços for-end
• Neste tipo de laço, a execução de um ou um grupo de comandos
é repetido um número de vezes predeterminado.

• Em um comando for, é possível atribuir valores específicos a k,


como num vetor. Por exemplo: k=[7 9 -1 3 3 5].
• O valor de k não deve ser redefinido dentro do loop.
Laços while-end
• O comando while-end é útil quando se deseja realizar um laço
mas o número de repetições não é conhecido de antemão. O
processo continua sendo executado até que uma certa
condição seja satisfeita.

• Mesmo os melhores programadores cometem erros e um loop


infinito pode ocorrer por descuido do programador. Caso isso
aconteça, o usuário pode parar a execução do programa
pressionando, simultaneamente as teclas Ctrl+C.
Os comandos break e continue
• O comando break quando inserido em um laço, provoca a
saída imediata do laço. Inserido dentro de um loop aninhado
finaliza somente o loop que contém o break. Aparecendo na
estrutura de uma rotina ou função, provoca o término imediato
da execução das mesmas, a partir do ponto onde está situado.
• O comando continue é utilizado dentro de um laço de maneira
a parar o passo atual e iniciar o próximo passo no processo de
looping.
Referência bibliográfica:
• GILAT, Amos. MATLAB com aplicações em engenharia. Porto
Alegre: Bookman, 2006. 2ª ed.

Todas as informações desta apresentação foram retiradas deste


livro, resumindo os primeiros sete capítulos (pág. 1 à 207).

Você também pode gostar