Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdução
Entrada e saída de dados
Scripts
Funções:
Estrutura básica
Subfunções
Resumo das funções MATLAB
1
Um ficheiro-M não é mais do que um ficheiro de texto que
agrega um conjunto de instruções de código MATLAB.
2
Cada instrução é escrita diretamente na linha de comandos,
sendo executada quando se aciona a tecla Enter. Contudo esta
forma não é prática nem eficaz quando:
Se pretende executar um número significativo de
comandos.
Reproduzir os resultados de uma determinada sequência
de processamento.
Modificar o valor de algumas variáveis.
Reavaliar os resultados obtidos.
O MATLAB consegue ultrapassar as limitações de interação
através da linha de comandos, dado que permite processar
sequências de instruções armazenadas em ficheiro de texto
ASCII com a extensão ‘.m’.
Este ficheiros designados por ficheiros-M (M-Files) podem ser
editados num editor próprio que o MATLAB disponibiliza ou em
qualquer editor de texto básico.
3
Os ficheiros-M podem ser apenas sequências de comandos
(scripts) ou podem ser funções.
4
Entrada de dados
A função input, na sintaxe dados_entrada=input(‘texto’),
solicita ao utilizador que introduza uma determinada
informação numérica, descrita pelo argumento texto. A
informação introduzida é armazenada na variável
dados_entrada.
No exemplo seguinte, ilustra-se a utilização desta função:
% Solicita informação numérica ao utilizador
a = input('Insira um valor para a variável a:\n');
% Imprime o valor da variável a
fprintf('O valor da variável a é %d\n', a);
5
Entrada de dados (Continuação)
6
Saída de dados
O MATLAB disponibiliza algumas funções específicas para a
escrita de dados de saída de um programa.
A função mais simples para escrita de dados é a função disp.
Esta função permite imprimir na janela de comando uma string
de caracteres sem que apareça o nome da variável
correspondente.
Existe uma outra função para escrita de dados que permite um
maior controlo sobre a sua formatação, a função fprintf,
invocada na forma fprintf(format, val1, val2, …).
Para imprimir uma linha de texto através de fprintf basta
invocar a função passando como argumento a string a imprimir,
fprintf(‘texto’).
7
Saída de dados (Continuação)
Se pretender que depois de executada a função o prompt
aponte para a linha seguinte, deverá terminar a string com a
sequência ‘\n’. A tabela seguinte mostra alguns dos caracteres
especiais que poderão ser utilizados na função fprintf.
Símbolo Descrição
\b Backspace
\n Mudança de linha
\r Return
\t Tabulação horizontal (Tab)
\\ Escreve o carácter\
\’ Escreve o carácter ‘
%% Escreve o carácter %
8
Saída de dados (Continuação)
O exemplo seguinte mostra a utilização desta função para
imprimir uma linha de texto. De notar que a escrita de uma
linha de texto pode recorrer a várias chamadas à função fprintf,
bastando a não inclusão do carácter especial ‘\n’ para que o
resultado seja concatenado na linha de saída na janela de
comandos. Com esta técnica o MATLAB imprime, na mesma
linha, as strings passadas como argumento de fprintf.
9
Saída de dados (Continuação)
Para definir o formato dos dados, apresenta-se os diferentes
descritores de formato que o utilizador pode passar à função.
Símbolo Descrição
%c Um único carácter
%d Número inteiro
%e ou %E Número real escrito em notação científica
%f Número real com parte decimal
%g Notação mais compacta de %e e %f
%o Número octal sem sinal
%s String de caracteres
%u Número inteiro sem sinal
%x ou %X Hexadecimal (com letras minúsculas ou maiúsculas)
10
Saída de dados (Continuação)
Para ilustrar a grande variedade de formatos que o MATLAB
permite especificar atente-se nos seguintes exemplos. No
código seguinte é usada a função fprintf para imprimir uma
string composta pelo valor de duas variáveis.
11
Saída de dados (Continuação)
No exemplo seguinte ilustra-se a escrita de valores em formato
de número inteiro, considerando diferentes tamanhos do campo
de caracteres.
12
Os scripts são muito úteis para realizar tarefas que envolvem a
execução de muitas instruções. São invocados escrevendo o
seu nome na janela de comando, sem a extensão ‘.m’.
As instruções executadas por um script operam diretamente
sobre os dados da área global de trabalho (workspace). Assim
um script tem acesso a todas as variáveis existentes na área
global de trabalho e qualquer variável por si criada existirá
nessa área.
Estes dados persistem para além do término da execução do
script, exceto se forem explicitamente apagados durante a sua
execução, recorrendo ao comando clear.
Normalmente, a execução de um script não reproduz na janela
de comandos a sequência de instruções processada. No
entanto, o comando echo pode ser usado para ativar (echo on)
ou desativar (echo off) a visualização das instruções à medida
que são executadas.
13
O código seguinte ilustra um script armazenado no ficheiro
temperaturas.m, que calcula estatísticas sobre um vetor de
temperaturas registadas em 10 dias. Para proceder à sua
execução basta selecionar como diretoria atual a diretoria onde
o ficheiro_M reside e escrever na linha de comandos
temperaturas.
% limpar workspace e ecrã
clear;
clc;
temp = [35, 38, 37, 36, 37, 39, 39, 38, 37, 36];
14
Uma função é como uma caixa preta que esconde os passos
necessários para realizar determinada operação.
16
Estrutura básica (Continuação)
O exemplo seguinte transforma o script apresentado
anteriormente numa função. É criada a função ftemperaturas e
armazenada no ficheiro-M com o mesmo nome. O vetor de
temperaturas é agora passado como parâmetro de entrada e as
estatísticas calculadas são retornadas como parâmetros de
saída.
17
Estrutura básica (Continuação)
Admitindo que o vetor temp já existe na área global de trabalho
do MATLAB, para invocar a função executamos o comando
ftemperaturas(temp) diretamente na linha de comandos,
ignorando o retorno da função. Caso se pretenda armazenar as
estatísticas retornadas é necessário indicar variáveis para esse
efeito, agrupadas num vetor linha.
% Definição do argumento de entrada
temp = [35, 38, 37, 36, 37, 39, 39, 38, 37, 36];
% Chamada da função
[max, min, med, desvio] = ftemperaturas(temp)
max = 39
min = 35
med = 37.2000
desvio = 1.3166
18
Estrutura básica (Continuação)
Existem algumas regras que devem ser respeitadas quando se
constrói uma função:
O nome de uma função tem de começar por uma letra,
seguindo-se uma qualquer combinação de letras, dígitos e
underscores ‘_’.
O código da função deve ser guardado num ficheiro com o
nome da própria função e com a extensão ‘.m’.
A declaração da função define a sua sintaxe e tem de estar
no início do ficheiro.
Uma função pode aceitar ou retornar zero ou mais
parâmetros.
O texto que se segue à declaração da função, na forma de
comentário é opcional.
19
Estrutura básica (Continuação)
É possível invocar scripts e outras funções a partir de uma
função.
O comando return pode ser usado para forçar o retorno da
função em qualquer ponto de execução, seja intermédio ou
final.
O comando warning pode ser usado para imprimir na janela
de comandos uma mensagem de aviso, sinalizando que
ocorreu alguma situação anómala que não é demasiado
grave ao ponto de impedir a execução da função, mas que
pode ter influência negativa sobre os resultados obtidos.
O comando error pode ser usado para abortar a execução de
uma função em caso de erro severo.
Uma função termina quando é atingida a última linha do
ficheiro-M, a declaração de uma subfunção ou o comando
return.
20
Subfunções
O MATLAB permite que seja definida mais do que uma função
dentro do mesmo ficheiro-M. A primeira função definida no
ficheiro é considerada a função principal, visível no exterior e
cujo nome deve ser atribuído ao ficheiro-M.
21
Subfunções (Continuação)
22
Subfunções (Continuação)
O bloco seguinte ilustra de forma genérica a declaração de uma
função chamada funcao_principal, que faz uso de uma
subfunção chamada sub_funcao.
% Declaração da subfunção
function [m, n] = sub_funcao1(x, y, z)
% … (Sequência de comandos da Subfunção) …
23
Elementos
function Palavra reservada para definição de funções MATLAB
Lista de tamanho variável que agrupa argumentos de entrada de
varargin
uma função
Lista de tamanho variável que agrupa argumentos de saída de
varargout
uma função
@ Usado na criação de referência de função (handle)
Palavra reservada para definição de variável global (definida no
global
espaço de trabalho global e partilhada por todas as funções)
Palavra reservada para definição de variável persistente (variável
persistent local à função em que é declarada, mas cujo valor se mantém
entre invocações dessa mesma função)
Funções Gerais
echo Ativa/desativa visualização dos comandos executados
24
Funções Gerais (continuação)
Ativa/desativa a impressão de mensagens de aviso. Imprime
warning
mensagens de aviso na janela de comandos
lastwarn Obtém a última mensagem de aviso
error Imprime mensagem de erro na janela de comandos
lasterr Retorna a última mensagem de erro
Retorna a última mensagem de erro, acompanhada de
lasterror
informação associada
Atribui valor a uma variável existente num determinado
assignin
espaço de trabalho (global ou da função em execução)
isglobal Determina se uma variável foi definida como global
Determina se uma string é uma palavra reservada. Imprime
iskeyword
a lista de palavras reservada
Determina o número máximo de caracteres que o nome de
namelengthmax
uma variável ou função pode ter
Determina se uma string constitui um nome válido para uma
isvarname
variável
mfilename Retorna o nome do ficheiro-M em execução
25
Funções Inline
inline Cria função inline
26
Funções de Funções
eval Executa representação textual de uma expressão MATLAB
Semelhante a eval, à exceção de que todas as mensagens
evalc enviadas para a janela de comandos são capturadas e
retornadas num vetor de caracteres
Executa representação textual de uma expressão MATLAB,
evalin num determinado espaço de trabalho (global ou da
função em execução)
feval Executa função identificada por uma referência (handle)
Vetoriza expressão matemática ou função inline, para
vectorize
otimização de código
func2str Converte referência de função (handle) em string
str2func Converte string em referência de função (handle)
27
Funções MATLAB
Determina o número de argumentos de entrada passados a
nargin
uma função
Determina a número de argumentos de saída passados a uma
nargout
função
Valida o número de argumentos de entrada passados a uma
nargchk
função
Valida o número de argumentos de saída passados a uma
nargoutchk
função
Retorna o fluxo de execução a quem invocou a função
return
(termina a execução da função)
28
Funções de depuração de erros
dbstop Define ponto de paragem
dbclear Elimina ponto de paragem
dbstatus Lista todos os pontos de paragem definidos
dbstep Executa uma ou mais linhas de código
dbcont Retorna o normal fluxo de execução
dbup Altera o espaço e dados no contexto atual
dbdown Altera o espaço e dados no contexto atual
dbstack Lista a sequência de invocações
dbtype Mostra ficheiro-M, com numeração das linhas
dbmex Ativa a depuração de ficheiros-MEX
dbquit Sai do modo de depuração, abortando o fluxo de execução suspenso
29
Morais, V. e Vieira, C. (2013) MATLAB Curso
Completo, FCA.
Chapman, Stephen J., (2015) MATLAB
Programming for Engineers, 5th Edition,
Thomson Learning.
Site de suporte da MathWorks
www.mathworks.com
30