Вы находитесь на странице: 1из 50

Conceito

Vocacionado para o cálculo numérico


MATLAB = MATrix LABoratory
Os elementos são sempre matrizes numéricas
Um número é uma matriz com apenas um
elemento
Utilidade
Oferece um leque alargado de bibliotecas
de funções pré-definidas.
Muito amigável em funcionalidades
gráficas para Visualização de Dados.
Largamente divulgado em Universidades e
Laboratórios de Investigação.
Muito conveniente para o desenvolvimento
eficaz de protótipos.
Introdução
Software para análise numérica
Cálculo com matrizes
Processamento numérico
Testes lógicos, testes condicionais, estruturas de repetição
Construção de gráficos, etc
Problemas expressos numa forma mais próxima da
notação matemática
Interpreta comandos do usuário dados na janela de
comando.
Elemento básico de informação: MATRIZ
Alta performance
Alto nível
Ambiente de trabalho
O ambiente gráfico
Janela da comandos
Ajuda
Para mudar a pasta de
trabalho
Documentação e demos
dos produtos instalados

Espaço de trabalho com


as variáveis

Histórico dos comandos


Conteúdo da pasta de
trabalho
Ambiente de trabalho (2)
componentes da janela:
Workspace
> Mostra todas as
variáveis definidas
Command Window
> Executa os comandos
do ambiente MATLAB
Command History
> Mostra o registo dos
comandos utilizados
File Editor Window
> Definição de novas
funções
Ambiente de trabalho (3)
Ajuda

Ajuda MATLAB é uma


contribuição extremamente
importante para a aprendizagem do
MATLAB

Ajuda não só contém a base teórica,


mas também mostra demos de
execução

Ajuda do MATLAB podem ser


abertos usando o menu AJUDA no
menu
Ajuda (2)
Qualquer descrição de um comando
pode ser encontrada introduzindo o
comando no campo de pesquisa.

Sendo mostrado como no exemplo, a


descrição do comando para tirar a raiz
quadrada (sqrt), figura de cima.

Também podemos utilizar a ajuda do


MATLAB (através do comando help) na
janela de comando como mostrado na
figura de baixo.
Tipos de dados
No MATLAB todos os dados são ARRAYS
Os Arrays podem ser dos tipos:
Char (caracter)
String
Numérico (single, double, int8, int16, int32, uint8, uint16,
uint32)
Lógico (true, false)
Célula
Estrutura (ex: Pessoa.idade)
Formatar tipos de dados
Formatar tipos de dados (2)
Operadores aritméticos
+ adição
- subtracção
* multiplicação
/ divisão
^ potenciação
‘ transposta do conjugado complexo
.* multiplicação element-a-elemento
./ divisão elemento-a-elemento
.^ potenciação elemento-a-elemento
.‘ transposta
\ divisão inteira
Operadores aritméticos
Operadores relacionais

== igual
~= diferente
<  menor que
<= menor ou igual que
>  maior que
>= maior ou igual que
Operadores relacionais
Operadores lógicos

&  E
|  OU
xor OU exclusivo lógico
~  NÃO

Devolve sempre um valor Booleano, 1 (TRUE) ou 0 (FALSE)


Operadores lógicos
Operadores lógicos
Precedência dos operadores

1. Os operadores aritméticos são avaliados primeiro.


2. Os operadores relacionais são avaliados da
esquerda para a direita.
3. Todos os operadores ~ são avaliados.
4. Todos os operadores & são avaliados.
5. Todos os operadores I são avaliados.

OBS: Sempre use parênteses para indicar a ordem


correcta desejada de avaliação de uma expressão.
Vectores
Variáveis de uma dimensão, de qualquer tipo
de dados válido
x = [1 2 5 1]

 x=
  1 2 5 1
Matrizes
Variáveis multidimensionais, de qualquer tipo
de dados válido
x = [1 2 3; 5 1 4; 3 2 -1]

 x=
 1 2 3
5 1 4
3 2 -1
Gerar matrizes de funções
x = zeros(1,3)
• zeros(M,N) MxN matriz de zeros x=
 0 0 0

• ones(M,N) MxN matriz de uns x = ones(1,3)


x=
 1 1 1

• rand(M,N) MxN matriz com números


aleatórios uniformemente x = rand(1,3)
x=
distribuídos, no intervalo
0.9501 0.2311 0.6068
(0,1)

x = eye(3,3)
• eye(M,N) MxN matriz com uns na
diagonal principal, e zeros x=
nos outros indices  1 0 0
0 1 0
0 0 1
Operações sobre matrizes
y = x.  y=
      1
      2
    5
transposta       1

y=x(2,3)
y=
aceder ao elemento x(i,j) 4

y=x(3,:)
Toda a linha y=
3 2 -1

y=x(:,2)
y=
Toda a coluna 2
1
2
Operações sobre matrizes (2)

x = [ zeros(1,3) ones(1,2) ]
[ ] concatenação x=
0 0 0 1 1

x = [ 1 3 5 7 9]
( ) subscrição x=
1 3 5 7 9

y = x(2)
y=
3

y = x(2:4)
y=
3 5 7

inv(matriz) -> inverte a matriz


det(matriz) -> calcula o determinante da matriz
Endereçamento de arrays

     
   


   
      



  
   




       

     




        



   


[l c] = size(array) -> retorna o tamanho em linhas e colunas do array.
num_elem = length(array) -> retorna o tamanho da dimensão mais longa.
max_elem = max(array) -> retorna o elemento com valor máximo do array.
min_elem = min(array) -> retorna o elemento com valor mínimo do array.
sum_array = sum(array) -> retorna a soma dos elementos do array.
Operações sobre variáveis
• Apagar variáveis
– clear v1 v2 apaga as variáveis v1 e v2
– clear all apaga todas as variáveis
• Ver as variáveis no espaço de trabalho (“workspace”)
– whos mostra todas as variáveis do espaço de trabalho
com informação adicional de dimensão e tipo
– who mostra apenas os nomes das variáveis
• Guardar variáveis
– save Guarda em disco todas as variáveis do “workspace”
– load Carrega do disco as variáveis guardadas
– save ficheiro v1 v2 Guarda as variáveis v1 e v2 no ficheiro
– load ficheiro Carrega as variáveis do ficheiro
Comandos básicos

>>who -- Lista as variáveis.


>>whos -- Lista e especifica as variáveis.
>>clc -- Limpa a Janela de Comandos.
>>clf -- Limpa figura actual
>>clear -- Apaga as variáveis da workspace MATLAB.
>>help -- Ajuda do MATLAB, documentação.
>>help elfun – Lista funções do MATLAB
Estrutura de controlo (if)
Estrutura de controlo (if)

IF expressão
Bloco de código
ELSEIF expressão
Bloco de código
ELSE
Bloco de código
END
Estrutura de controlo (switch)
Estrutura de controlo (switch)

SWITCH condição
CASE valor,
Bloco código, …, Bloco código
CASE {valor1, valor2, valor3, …}
Bloco código, …, Bloco código

OTHERWISE
Bloco código, …, Bloco código

END
Estruturas de repetição
FOR variável=expressão
Bloco de código
END

WHILE expressão
Bloco de código
END
Funções úteis
Funções Elementares

• abs(x) - valor absoluto de x.


• acos(x) - arco cujo cassino é x.
• asin(x) - arco cujo seno é x.
• atan(x) - arco cuja tangente é x.
• cos(x) - cassino de x.
• exp(x) - exponencial ex.
• gcd(x,y) - Maximo 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.
• sin(x) - seno de x.
• sqrt(x) - raiz quadrada de x.
• tan(x) - tangente de x.
Strings
Internamente são Arrays de caracteres
Operações:

Concatenação: strcat(...) [horizontal], strvcat(...) [vertical]

Comparação [devolve 1 ou 0 por caracter consoante é igual ou diferente]

strcmp(a,b) [Strings completas]

strncmp(a,b,n) [primeiros n caracteres]

strcmpi(a,b) [ignorar diferenças entre maiúsculas e minúsculas]

strncmpi(a,b,n) [primeiros n caracteres]

Procura e Substituição: findstr(s,v) - strmatch(a,b,’exact’) [exact usa-se apenas qd a procura é exacta]

Conversão:

Maiúsculas / Minúsculas: upper(s) - lower(s)

Número -> String: int2str(n) - num2str(n) - num2str(n, ‘format’)

String -> Número: str2double(s) - str2num(s)


Conversão de bases númericas

Decimal <-> binário


dec2bin(n10) - bin2dec(n2)
Decimal <-> hexadecimal
dec2hex(n10) - hex2dec(nh)
Decimal <-> qualquer base
dec2base(n10) - base2dec(nb)
Saída de dados
Em Matlab há vários processos de escrever os resultados
(output), permitindo controlar, de algum modo, o aspecto
com que essa informação é escrita. Os mais simples são:
1. Instruções sem (;);
2. Função disp;
3. Função fprintf (para o monitor).
Ficheiros
FILE_ID = fopen(‘ficheiro.txt’, ‘r,r+,w,w+,a,a+’); (3-sucesso a abrir)

Line = fgetl(File_ID); (ler linha)


Line = fgets(File_ID); (ler string)
fread(FILE_ID,len); (ler até len)

fwrite(FILE_ID,var,len); (escrever var de tamanho len)

fseek(FILE_ID, ‘eof, bof, cof’); (posicionar no ficheiro)


ftell(FILE_ID); (posição corrente)
fclose(FILE_ID); (fechar)
Gráficos 2D
Comando plot
t = 0:pi/100:2*pi; t = linspace(0,10*pi,1001);
x = sin(t); x = t + 3*sin(2*t);
y = t + 5*cos(5*t);
plot(t,x) figure(1)
plot(x,y)

t = linspace(0,5*pi,5001);
x = cos(t) - cos(80*t).*sin(t);
y = 2*sin(t) - sin(80*t);
figure(2)
plot(x,y)

Lembrar as funções
hold on e hold off
Gráficos 2D
Gráficos 2D
X = 0:0.05:1;
subplot(121), plot(X,X.^2,’k*’)
subplot(122), plot(X,X.^2,’b --‘)
Gráficos 3D
mesh

[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z)
Ficheiros m

• Os ficheiros M são macros de comandos


do MATLAB que são armazendas como
ficheiros de texto com extensão "m", isto
é nomeficheiro.m.
• Um ficheiro M tanto pode ser uma
função com variáveis de E/S ou uma lista
de comandos.
Ficheiros m

 Como Criar um Ficheiro M (M-file)

Para criar um arquivo M-file, siga os seguintes


passos:
Inicialmente, você deve abrir o programa
MATLAB, dando um duplo click no ícone do
MATLAB que está na área de trabalho.
Selecione o menu File.
Selecione o comando New M-file.
Ficheiros m
Exemplo de script-file.

% script-file: circulo.m
% Este programa calcula a área de um circulo
raio = 2.5;
area = pi*raio^2;
fprintf(‘Area do circulo = %.3f ', area);
Ficheiros m
 Como Executar um Ficheiro M (M-file)
 Para executar um arquivo M-file no MATLAB é preciso
gravar o arquivo correspondente. Para isto, selecione o
item Save Workspace As do menu File. Dê preferência
salvar o arquivo no diretório corrente do MATLAB, ou
seja, na pasta work. Para executar o arquivo M, digite
no prompt do MATLAB o nome do arquivo salvado
anteriormente, sem a extensão ‘.m’. Feito isso o
MATLAB gera o executável do programa.

Exemplo: >>circulo
Funções do utilizador

 Funções Definidas pelo utilizador.


function [outarg1, outarg2, ...] = fname(inarg1, inarg2, ...)
% H1 comentário
% Mais um comentário
...
(Código executável)
...
(return)
Funções do utilizador
function [resultado] = distancia2(xa,ya,xb,yb)
% DISTANCIA2 Calcula a distancia entre dois pontos
% Function DISTANCIA2 calcula a distancia entre dois pontos
% A(xa,ya) e B(xb,yb) no sistema de coordenadas cartesiano.
%
% Chamada a função
%
% res = distancia2(xa, ya, xb, yb)
%
% Definiçao das variaveis
% xa: abscissa do ponto A
% ya: ordenada do ponto A
% xb: abscissa do ponto B
% yb: ordenada do ponto B
% resultado: Distancia entre os pontos A e B.
% Calculo da distancia
  resultado = sqrt((xb - xa).^2 + (yb - ya).^2)
Funções do utilizador
Uso da função teste_distancia. % Dados fornecidos pelo usuario
disp('Calcule a distancia entre os pontos A e B');
% Script file: teste_distancia.m xa = input('Forneca a abscissa do ponto A: ');
% Este programa testa a funçao distancia2 ya = input('Forneca a ordenada do ponto A: ');
xb = input('Forneca a abscissa do ponto B: ');
% Definiçao das variaveis: yb = input('Forneca a ordenada do ponto B: ');
% xa: abscissa do ponto A
% Uso da funçao definida pelo programador
% ya: ordenada do ponto A
resultado = distancia2(xa, ya, xb, yb); % Chamada a funçao.
% xb: abscissa do ponto B
% yb: ordenada do ponto B % Exibiçao do resultado
% resultado: distancia entre os dois pontos A e B. fprintf('A distancia entre os pontos A e B e %f\n', resultado);
>> teste_distancia2
Calcule a distancia entre os pontos A e B
Forneca a abscissa do ponto A: 1
Forneca a ordenada do ponto A: 1
Forneca a abscissa do ponto B: 2
Forneca a ordenada do ponto B: 2

resultado =

1.4142

A distancia entre os pontos A e B e 1.414214


>>
Muito obrigado!

Вам также может понравиться