Buscar

introdução matlab 2013ra

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1. Acessando o Matlab 
2. Utilizando o MATLAB. 
3. Operações com matrizes e vetores 
4. Declarações, expressões e variáveis; Salvando uma sessão. 
5. Funções de Construção de Matrizes 
6. Loops for, while e blocos if 
7. Funções Escalares. 
8. Funções Vetoriais. 
9. Funções Matriciais. 
10. Edição de Linha de Comando e Chamada 
11. Sub matrizes e notação em dois pontos (:) 
12 – Arquivos M 
13. Strings, Mensagens de Erro, Entrada. 
14. Manipulação de Arquivos M 
15. Formato de Saída 
16. Cópia 
17. Gráficos 
Bibliografia 
 
 
1. Acessando o Matlab 
 
 Para acessar o Matlab: 
c:\ > matlab 
 
 Para sair: 
>> quit 
Em sistemas operacionais pode-se ter o MATLAB em uma janela e o editor em outra. 
 
 Índice 
 
 
 
2. Utilizando o MATLAB. 
Entrando com matrizes 
 O MATLAB trabalha essencialmente com um tipo de objeto - matriz numérica retangular, que pode aceitar 
inclusive valores complexos. Todas as variáveis no MATLAB representam matrizes. Algumas vezes matrizes de 
1 x 1 são interpretadas como escalares e matrizes com uma linha ou uma coluna são interpretadas como vetores. 
 
Introduzindo uma matriz no MATLAB. 
 
 Lista explícita de elementos 
 
 A = [ 1 2 3; 3 4 5; 6 7 8] que é a mesma coisa que entrar como a seguir: 
 A = [ 1 2 3 
 3 4 5 
 6 7 8] 
 
 Os elementos de uma linha podem ser separados por vírgula (,) ou espaço ( ). 
 Números na forma exponencial, deve-se evitar espaços em branco (exemplo, 3.19e-3). 
 Matrizes grandes – usar um arquivo M onde é possível editar os erros facilmente 
 
 Geração por declarações embutidas ou funções (ou seja, comandos do MATLAB ) 
Exemplos de funções utilizadas para gerar matrizes: rand, magic, hilb. 
rand(n) gera matriz quadrática de dimensões n x n, aleatória com distribuição uniforme, no intervalo [0,1]. 
Ex.: x=rand(3) 
rand(m,n) gera uma matriz de dimensões m x n. 
Ex: x=rand(3,4) 
magic(n) cria uma matriz integral de dimensões n x n que é matriz quadrada (linhas e colunas têm a mesma soma). 
Ex: x=magic(4) 
 
 Em todos os exemplos, m e n são inteiros positivos. 
 Outra forma de gerar matrizes é através de "loops" "for". 
 Para especificar um único elemento da matriz é usa-se índices entre parênteses. 
Ex: x(2,3) 
Esta notação denota um valor na segunda linha e terceira coluna. 
Tente: x(3,5) 
 
 Indexadores de matrizes no MATLAB têm que ser inteiros positivos (não nulos). 
 
 
 Índice 
 
 
 
 
 
 
 
3. Operações com matrizes e vetores 
 
 Operações disponíveis no Matlab: 
 + Adição 
 - Subtração 
 * Multiplicação 
 ^ Potência 
 ' Transposição (por exemplo, se A é uma matriz, então A' é sua transposta) 
 \ Divisão à esquerda 
 / Divisão à direita 
 
 
 Tais operações aplicam-se também a escalares (considerados matrizes de 1 x 1). 
 Se os tamanhos das matrizes são incompatíveis, para a operação matricial, será gerada uma mensagem de erro, 
com exceção do caso de operações entre escalares e matrizes (para adição, subtração, divisão e multiplicação), 
quando cada entrada da matriz é operado pelo escalar. 
 A "divisão de matrizes" necessita de atenção especial. Se A é uma matriz inversível quadrada e b é um vetor 
coluna (ou linha) compatível, então 
 x = A\b é a solução de A * x = b e, respectivamente, 
 x = b/A é a solução de x * A = b. 
 Na "divisão à esquerda", se A é quadrada, então ela é fatorada usando-se eliminação Guassiana e estes fatores 
são usados para resolver A * x = b. Se A não é quadrada, ela é fatorada usando ortogonalização de Householder 
com pivoteamente por coluna e os fatores são usados para resolver o sistema sub ou sobre determinado no 
sentido dos mínimos quadráticos. A divisão à direita é definida em termos da divisão à esquerda por b/A = 
(A'\b'). 
 
 
 
 Operações com Vetores. 
 
 As operações de adição e subtração operam sobre os elementos da matriz, ou seja, elemento por elemento. As 
outras operações são operações matriciais. As operações (*,^,\,/ ) podem operar por elemento da matriz se forem 
precedidos por ponto 
Ex.: [1,2,3,4] .*[1,2,3,4] como [1,2,3,4].^2 
 
 Índice 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4. Declarações, expressões e variáveis; Salvando uma sessão. 
 
 Matlab - linguagem de expressões; as expressões que se entra pelo teclado são interpretadas e avaliadas. Sintaxe 
das declarações no Matlab: 
 variável = expressão, ou simplesmente 
 expressão 
 
 
 Expressões - compostas por operadores, funções e variáveis. 
 A avaliação da expressão produz uma matriz, que é então exibida na tela e atribuída à variável para uso 
posterior. 
 Se a variável e o sinal de igual ( = ) são omitidos, o Matlab cria uma variável ( ans de answer ) e atribui o 
resultado a ela. 
 
 Declaração termina com <carriage return> (enter). Uma declaração pode ser continuada na próxima linha com 
três ou mais pontos seguidos por um <carriage return>. 
 
 Várias declarações podem ser colocadas em uma única linha se separadas por vírgulas ou ponto e vírgula. 
 
 Se o último caractere de uma declaração é ponto e vírgula, a impressão é suprimida, mas a atribuição é feita. 
(Útil para suprimir a impressão de resultados intermediários). 
 Matlab distingue entre letras maiúsculas e minúsculas. 
Ex.: initFF é diferente de initff. 
 Variáveis podem ter até 19 caracteres. Não é permitido usar caracteres de pontuação. 
 O comando who lista as variáveis disponíveis no espaço de trabalho (workspace). 
 Para remover uma variável do espaço de trabalho : clear nome da variável . 
 Para remover mais de uma variável especifica-se as lista de variáveis: 
 clear var1 var2 var3 
 O comando clear sozinho remove todas as variáveis não permanentes. 
 A variável permanente eps (epsilon): precisão de cerca de 10-16 (maioria das máquinas) Ela é útil para 
determinar tolerâncias para a convergência em processo iterativos. 
 Outras variáveis permanentes são: 
 pi razão entre o perímetro da circunferência e seu diâmetro. 
 inf infinito, por exemplo, 1/0 
 NaN Não-numérico, por exemplo, 0/0 
 i e j i=j=sqrt(-1) (raiz quadrada de –1) 
 realmin menor número real positivo utilizável 
 realmax maior número real positivo utilizável 
 
 Exibição ou execução pode ser parada em na maioria das máquinas sem ser necessário sair do Matlab digitando 
apenas CTRL-C (CTRL-BREAK no PC). 
 
 
 
 Salvando uma sessão. 
 
 Saindo-se do Matlab perde-se todas as variáveis. O comando save permite salvar as variáveis em disco 
chamado matlab.mat. 
Ex.: 
a=rand(3); 
b=rand(5); 
c=rand(20); 
who 
save 
clear 
 
 O comando load restaura o espaço de trabalho ao seu estado anterior. 
Ex.: 
who 
load 
who 
 
 Para salvar apenas algumas variáveis presentes no ambiente atual, especifica-se o comando acompanhado dos 
argumentos. 
 >> save dados a b 
dados é o nome do arquivo e as variáveis são : a e b . 
 
 Apenas elas estarão no arquivo dados, as demais variáveis noambiente serão perdidas se a sessão for 
interrompida. 
 Índice 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5. Funções de Construção de Matrizes 
 
 Funções de construção de matrizes são: 
 eye matriz identidade 
Ex.: eye(2) 
 zeros matriz de zeros 
Ex: zeros(2,2) 
 ones matriz de 1's 
Ex: ones(2,2) 
 diag matriz diagonal 
 Se x é um vetor, diag(x) é a matriz diagonal com x na diagonal; 
 x=[1 2 3 1 -1 4]; 
diag(x) 
 
 Se A é uma matriz quadrada, então diag(A) é um vetor cujos componentes são os elementos da diagonal de A. 
A=[3 11 5; 4 1 -3; 6 2 1] 
diag(A) 
Tente diag(diag(A)) 
 
 É possível construir uma matriz a partir de blocos. Exemplo, se A é uma matriz 3 x 3, então 
B = [A, zeros(3,2); zeros(2,3), eye(2)] 
Matriz 5 x 5. 
 triu parte triangular superior de uma matriz 
triu(A) 
 tril parte triangular inferior de uma matriz 
tril(A) 
 
 rand matriz gerada aleatoriamente 
rand(5,4) 
 hilb matriz de Hilbert 
hilb(3) 
 magic quadrado mágico 
magic(3) 
 toeplitz digite help toeplitz 
 
Para ver toeplitz, digite help toeplitz no Matlab. 
 Índice 
 
 
 
 
6. Loops for, while e blocos if 
 
 Comandos de fluxos do Matlab funcionam como nas linguagens de programação. 
 Sintaxe para um for é: 
 x=[];n=5; 
 for i=1:n, x=[x,i^2], end 
ou 
 x=[];n=5; 
 for i=1:n 
 x=[x,i^2] 
 end 
 
 Observe que as duas declarações anteriores produziram o mesmo resultado. Veja que é possível definir uma 
matriz vazia e que o índice varia de 1 até n. 
Outro exemplo: 
m=3; n=4; 
for i=1:m 
 for j=1:n 
 H(i,j)=1/(i+j-1); 
 end 
end 
H 
 
 O resultado é uma matriz de Hilbert de tamanho m=3 x n=4. 
 Colocando-se ponto e vírgula depois de um comando, evita-se a impressão durante o processamento. 
 Para exibir o resultado da matriz H utilizou-se o comando H sem ponto vírgula. 
 
 Sintaxe para um loop com while : 
 while relações 
 declarações 
 end 
Declarações (grupo de comando) são executadas repetidamente enquanto as relações forem satisfeitas. 
Ex.: Tomando-se um certo a, o seguinte código computa e exibe o menor inteiro não negativo n tal que 2^n >= a: 
n=0;a=3; 
while(2^n<a) 
 n=n+1; 
end 
n 
 
 Sintaxe de uma relação if é: 
 if relações 
 declarações 
 elseif relações 
 declarações 
 else 
 declarações 
 end 
Declarações são executadas se a relação for verdadeira. 
if n<0 
 parity=0; 
elseif rem(n,2)==0 
 parity=2; 
else 
 parity=1; 
end 
parity 
 
 
 Operadores relacionais no Matlab são: 
 < menor 
 > maior 
 <= menor ou igual 
 >= maior ou igual 
 == igual 
 ~= diferente 
 Observe que '=' é usado para atribuição a variáveis, enquanto '==' é usado em uma relação. As relações podem 
ser conectadas ou quantificadas através de operadores lógicos: 
 & and 
 | or 
 ~ not 
 
 Quando aplicada a um escalar, uma relação é na realidade 1 ou 0 dependendo se a relação é verdadeira ou falsa. 
Ex.: 
3>5 
ans = 
 0 
3<5 
ans = 
 1 
3==5 
ans = 
 0 
3==3 
ans = 
 1 
 
 
 Quando aplicada a matrizes do mesmo tamanho, a relação é uma matriz de 0's ou 1's que dá o valor da relação 
entre entradas correspondentes. Por exemplo: 
a=rand(5) 
a = 
 0.9103 0.3282 0.2470 0.0727 0.7665 
 0.7622 0.6326 0.9826 0.6316 0.4777 
 0.2625 0.7564 0.7227 0.8847 0.2378 
 0.0475 0.9910 0.7534 0.2727 0.2749 
 0.7361 0.3653 0.6515 0.4364 0.3593 
b=triu(a) 
b = 
 0.9103 0.3282 0.2470 0.0727 0.7665 
 0 0.6326 0.9826 0.6316 0.4777 
 0 0 0.7227 0.8847 0.2378 
 0 0 0 0.2727 0.2749 
 0 0 0 0 0.3593 
a==b 
ans = 
 1 1 1 1 1 
 0 1 1 1 1 
 0 0 1 1 1 
 0 0 0 1 1 
 0 0 0 0 1 
 
 
 
 Relação entre matrizes é interpretada como verdadeiro por um while ou por um if se cada entrada da matriz de 
relação é não nula. Assim, se você deseja executar o comando quando as matrizes A e B são iguais, poderias 
digitar: 
 if A==B 
 comandos 
 end 
 
 Para executar o comando quando A e B não são iguais, você poderia digitar: 
 if any(any(A~=B)) 
 comandos 
 end 
any – retorna "1" se um elemento da matriz for igual a 1. 
ou de forma mais simples, 
 if A~=B else 
 comandos 
 end 
 
 Observe que if A~=B, comandos, end não fará o que se deseja uma vez que o comando executaria apenas se 
cada umas das entradas correspondentes em A e B diferem. As funções any e all podem ser usadas de forma 
criativa para reduzir as relações matriciais para vetores ou escalares. No código acima, a função any foi chamada 
duas vezes, pois ela é um operador vetorial (seção 8). 
all – retorna 1 se todos os elementos da matriz forem diferente de zero. 
 Índice 
 
 
 
 
 
7. Funções Escalares. 
 
 Algumas funções no Matlab operam essencialmente sobre escalares, mas operam sobre cada elemento se forem 
aplicadas a uma matriz. As funções escalares mais comuns são: 
sin seno asin arcoseno exp exponencial abs valor absoluto 
round arredonda cos cosseno acos arco cosseno log (log natural) 
sqrt raíz quadrada floor arredonda na direção de menos infinito 
tan tangente atan arco tangente rem resto da divisão 
sign função sinal ceil arredonda na direção de mais infinito 
 
 Índice 
 
 8. Funções Vetoriais. 
 
 Outras funções do Matlab operam essencialmente sobre vetores (linha e coluna), mas em uma matriz m x n, 
agem sobre coluna por coluna para produzir um vetor linha com o resultado de sua aplicação para a cada coluna. 
É possível operar sobre linha por linha transpondo-se a matriz, por exemplo: mean(a')'. 
a =[ 0.9103 0.3282 0.2470 0.0727 0.7665 
 0.7622 0.6326 0.9826 0.6316 0.4777 
 0.2625 0.7564 0.7227 0.8847 0.2378 
 0.0475 0.9910 0.7534 0.2727 0.2749 
 0.7361 0.3653 0.6515 0.4364 0.3593] 
a = 
 0.9103 0.3282 0.2470 0.0727 0.7665 
 0.7622 0.6326 0.9826 0.6316 0.4777 
 0.2625 0.7564 0.7227 0.8847 0.2378 
 0.0475 0.9910 0.7534 0.2727 0.2749 
 0.7361 0.3653 0.6515 0.4364 0.3593 
mean(a) 
ans = 0.5437 0.6147 0.6714 0.4596 0.4232 
mean(a')' 
ans = 
 0.4649 
 0.6973 
 0.5728 
 0.4679 
 0.5097 
 
 Outros exemplos de funções vetoriais são: 
max(a) sum(a) median(a) any(a) min(a) prod(a) all(a) sort(a) std(a) 
prod – produto dos elementos 
sort – ordena em ordem crescente 
median – mediana 
Tentar: 
 max(max(A)) e max(A) 
 
 Índice 
 
9. Funções Matriciais. 
 
 Grande parte da versatilidadedo MATLAB vem de suas funções matriciais. As mais usadas são: 
eig autovalores e autovetores chol fatorização de Cholesky 
svd decomposição em valor singular inv inversa 
lu fatorização LU qr fatorização QR 
hess forma de Hessenberg schur decomposição de Schur 
expm matriz exponencial sqrtm matriz de raiz quadrada 
poly característica polinomial det determinante 
size tamanho norm norma 1, norma 2, norma F, norma infinita 
cond número de condição na norma 2 rank ranque 
 
 As funções no MATLAB podem ter argumentos simples ou múltiplos. Por exemplo, 
y = eig(a) ou eig(a) produzem um vetor coluna contendo os autovalores da matriz "a". 
 y = eig(a) 
y = 
 2.7594 
 0.9232 
 -0.3618 + 0.1449i 
 -0.3618 - 0.1449i 
 -0.0613 
Já [U,D] = eig (a) produz uma matriz U cujas colunas são os autovetores de "a" e a matriz diagonal D com os 
autovalores de "a" na sua diagonal. 
 [U,D] = eig (a) 
U = 
 Columns 1 through 4 
 -0.3454 -0.7798 0.1164 - 0.1629i 0.1164 + 0.1629i 
 -0.5604 0.0010 0.0766 + 0.2393i 0.0766 - 0.2393i 
 -0.4815 0.4525 -0.5920 - 0.0723i -0.5920 + 0.0723i 
 -0.4198 0.3858 0.6555 - 0.2277i 0.6555 + 0.2277i 
 -0.3983 -0.1960 -0.0666 + 0.2348i -0.0666 - 0.2348i 
 Column 5 
 -0.4895 
 -0.4205 
 0.3115 
 0.0416 
 0.6963 
D = 
 Columns 1 through 4 
 2.7594 0 0 0 
 0 0.9232 0 0 
 0 0 -0.3618 + 0.1449i 0 
 0 0 0 -0.3618 - 0.1449i 
 0 0 0 0 
 Column 5 
 0 
 0 
 0 
 0 
 -0.0613 
 
 Índice 
 
10. Edição de Linha de Comando e Chamada 
 
 A linha de comando do MATLAB pode ser facilmente editada. O cursor pode ser posicionado com as 
setas letf/right (esquerda/direita) e a tecla Backspace (retorno) ou Delete (Excluir) usada para apagar o caracter 
à esquerda do cursor. Outras características de edição também estão disponíveis. Em um computador PC tente as 
teclas Home, End e Delete; em outros sistemas veja help cedit ou digite cedit. 
 
 Uma característica conveniente é usar as setas Up/Down para rolar sobre a pilha com comandos anteriores. 
É possível, portanto, relembrar uma linha de comando anterior, editá-la e executá-la. Para pequenas rotinas, é 
mais conveniente usar isto do que usar um arquivo M que implica em sair do Matlab para um editor de texto 
(seções 12 e 14). Por exemplos, o comando flopcounts (seção 15) para computar o inverso de matrizes de 
tamanhos diferentes pode ser comparado chamando-se, editando-se e executando repetidamente as seguintes 
linhas: 
a=rand(8); flops(0), inv(a); flops 
ans = 
 1320 
Se você queria comparar desenhos (plots) das funções y=sin(mx) e y=sin(nx) no intervalo [0,2*pi] para vários m e n, é 
possível fazer os mesmo com a linha de comando: 
m=2; n=3; x=0:0.01:2*pi; y=sin(m*x); z=sin(n*x); plot(x,y,x,z) 
 
 Índice 
 
 
11. Sub matrizes e notação em dois pontos (:) 
 
 Os vetores e matrizes são frequentemente usados no Matlab para atingir efeitos de manipulação sobre dados 
complexos. A notação "dois pontos" (que é usada para gerar vetores e submatrizes) e de subscrito em vetores 
são chaves para uma manipulação eficiente destes objetos. O uso criativo destas características permite a 
minimização do uso de loops (que deixa o Matlab lento) e torna o código simples e mais compreensível. 
 
 A expressão 1:5 (já vista nas declarações de loops for) é na realidade o vetor linha [1 2 3 4 5]. Os números não 
precisam ser inteiros nem incrementados de 1. Por exemplo, 
0.2:0.2:1.2 
 5:-1:1 
 
Exemplo: Uma tabela de senos. 
x=[0.0:0.1:2.0]'; 
y=sin(x); 
[x y] 
Note que a função sin opera para cada valor de x, assim o seno (coluna da direita) é função do valor de x (coluna da 
esquerda). 
 
 A notação em dois pontos (:) pode ser usada para acessar submatrizes de uma matriz. 
Ex.: 
a=[10 20 30 40; 50 60 70 80; 90 100 110 120; 130 140 150 160] 
a(1:4,3) corresponde aos 4 valores da coluna 3 da matriz a . 
 
 Os dois pontos (:) denotam uma linha inteira ou uma coluna inteira, por exemplo: 
a(:,3) 
a(1:4,:) 
 
 Vetores arbitrários integrais podem ser usados com subscrito: 
a(:,[2 4]) 
que resulta na submatriz com as colunas 2 e 4 da matriz a . 
 
 Este uso de subscritos pode ser usado em ambos os lados de uma declaração de atribuição: 
b=[1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16] 
a(:,[2 4 5])=b(:,1:3) 
As colunas 2, 4 e 5 da matriz a foram substituídas pelas colunas 1, 2 e 3 da matriz b . Note que com este comando a 
matriz a é apresentada por completo com as modificações ocorridas. 
 
 É possível multiplicar as colunas 2 e 4 da matriz a pela matriz 2 x 2 [1 2; 3 4]: 
a(:,[2 4])= a(:,[2 4]) * [1 2; 3 4] 
Novamente a matriz é apresentada por completo junto com as modificações. 
 Se x é um vetor de dimensão n , veja o efeito da declaração x = x(n:-1:1). 
x= [ 1 2 3 4 5 6] 
x=x(6:-1:1) 
Observação: 
 Pense nas linhas de comandos em Matlab para executar as funções apresentadas até agora, comparadas com 
algoritmos equivalentes em qualquer linguagem de programação. 
 Índice 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12 – Arquivos M 
 
 Matlab pode executar um sequência de declarações armazenada em arquivos chamados "Arquivos M" (devido à 
extensão ".m"). Muito do trabalho com Matlab está na criação e refinamento de arquivos M. 
 
 Os arquivos M podem ser scripts (roteiros) ou funções. 
Arquivos Scripts. 
 
 Um script consiste em uma sequência de comandos do Matlab. Se o arquivo tem um nome, por 
exemplo, sequence.m, então o comando sequence fará o Matlab executar os comandos declarados no 
arquivosequence.m. Todas as variáveis em um script são globais e mudam os valores das variáveis de mesmo 
nome no ambiente da sessão de Matlab atual. 
 
 Arquivos scripts são frequentemente usados para entrar dados em uma matriz grande. 
 Neles os erros de entrada podem ser facilmente editados e eliminados. 
Exemplo: Arquivo M chamado dados.m com as linhas abaixo: 
a= [ 
1 2 3 4 
5 6 7 8 
] 
Executar o arquivo dados. 
 Um arquivo M pode referenciar outros arquivos M, incluindo referência a si próprio (recursividade). 
Arquivos funções 
 Arquivos funções fornecem flexibilidade ao Matlab. Pode-se criar novas funções específicas para o problema. 
Tais funções têm o mesmo status de qualquer outra função do Matlab. 
 
 Em uma função as variáveis são locais. (Entretanto, a versão 4 do Matlab permite se declarar uma variável 
global dentro de uma função. Veja help global) 
Exemplo de uma função simples: 
function a = randint1(m,n) 
% RANDINT1 gera uma matriz de números aleatórios 
% randint1(m,n) retorna uma matriz m x n com valores entre 0 e 9. 
a = floor(10*rand(m,n)); 
Uma versão mais generalizada: 
function a = randint2(m,n,a,b) 
% RANDINT2 gera uma matriz de números aleatórios 
% randint2(m,n) retorna uma matriz m x n com valores entre 0 e 9. 
% randint(m,n,a,b) retorna entradas entreos inteiros a e b 
if nargin < 3, a=0; b=9; end 
a = floor((b-a+1)*rand(m,n))+a; 
(Digite no editor do Matlab e experimente). 
 
 As funções devem ser gravadas com os mesmos nomes das funções: randint1.m e randint2.m. 
Explicação da função: 
 Primeira linha - nome da função, os argumentos de entrada e de saída; sem esta linha o arquivo é um script e 
não uma função. 
 Chamando a partir do ambiente Matlab z = randint2(3,4), os números 3 e 4 são atribuídos às variáveis m e n na 
no arquivo da função. A saída é atribuída à variável z. (Como as variáveis em uma função são locais, seus nomes 
são independentes daqueles que estão no ambiente do Matlab atual.) 
 O uso de nargin (número de argumentos de entrada) permite o ajuste de um valor padrão de um variável de 
entrada omitida – tais como a e b na função exemplo randint2.m. 
 
 Uma função também pode ter argumentos de saída múltiplos. Por exemplo: 
function [mean, stdev]= stat(x) 
% STAT Média e Desvio Padrão 
% Para um vetor x, stat(x) retorna a média e o desvio padrão de x. 
% Para uma matriz x, stat(x) retorna dois vetores linha contendo 
% respectivamente, a média e o desvio padrão de cada coluna. 
[m,n]=size(x); 
if m == 1 
 m=n; % caso de um vetor linha 
end 
mean = sum(x)/m; 
stdev= sqrt(sum(x.^2)/m - mean.^2); 
(Crie um arquivo M e tente este comando para um vetor qualquer.) 
 
 Um comando no Matlab [xm, xd]=stat(x), atribui a média e o desvio padrão de x, às variáveis xm e xd. 
 
 Atribuições isoladas também podem ser feitas com uma função que tem argumentos de saída múltiplos. Por 
exemplo, xm = stat(x) (sem colchetes em torno de xm) atribui a média de x à xm. 
 
 % indica que o resto da linha é um comentário; O Matlab ignora o resto de linha. 
 
 As primeiras linha de comentários documentam o arquivo M. Servem para a ajuda on-line e são apresentadas 
quando se digita o comando: help stat. Esta documentação deve sempre estar presente em um arquivo de 
função. 
Observação: 
 Esta função ilustra algumas das características do Matlab que podem ser usadas para produzir código eficiente. 
Exemplo, x.^2 é a matriz de quadrados dos componentes de x; sum é uma função vetorial (seção 8); sqrt é uma 
função escalar (seção 7); e sum(x)/m é uma operação entre uma matriz e um escalar. 
 A função abaixo, que dá o máximo divisor comum de 2 inteiros através do algoritmo Euclidiano, ilustra o uso de 
uma mensagem de erro. 
 function a = mdc(a,b) 
% MDC Máximo Divisor Comum 
% mdc(a,b) é o máximo divisor comum dos inteiros a e b, 
% com a e b diferentes de zero. 
a=round(abs(a)); b=round(abs(b)) 
if a==0 & b==0 
 error('O mdc não é definido quando ambos os número são zero') 
else 
 while( b~=0) 
 r = rem(a,b); 
 a = b; b = r; 
 end 
end 
 
 Outras características avançadas são ilustradas no exemplo de função que se segue. Como notado anteriormente, 
alguns dos argumentos de entrada de uma função como tol no exemplo, podem ser opcionais através do uso 
de nargin (número de argumentos de entrada). A variável nargout pode ser usada de forma similar. 
 
 Note que o fato da relação ser um número (1 quando verdadeiro; 0 quando falso) é usado e que, quando os 
comandos while ou if são avaliados, nonzero significa verdadeiro e 0 significa falso. A função do 
Matlabfeval permite que se tenha uma string (sequência de caracteres) como uma variável de entrada, como 
nome de uma outra função. 
function [b, steps] = bisect(fun, x, tol) 
% BISECT Calcula a raiz de uma função de uma variável pelo método da bisseção. 
% bisect(fun, x) retorna uma raiz da função. fun é uma string contendo o nome 
% nome de uma função de valor real, de uma variável real; funções ordinárias 
% são definidas em arquivos M. 
% x é um valor inicial (chute). O valor retornado está perto de um ponto 
% onde a fun muda de sinal. Por exemplo, 
% bisect('sin', 3) é PI. Note as aspas em torno de sin. 
% 
% Um terceiro argumento opcional especifica uma tolerância para a precisão 
% relativa do resultado. O padrão é eps (valor padrão do Matlab para precisão 
% em ponto flutuante). 
% Um segundo argumento de saída opcional dá um matriz contendo a observação 
% dos passos de execução; as linhas são da forma [c f(c)]. 
% Inicialização 
if nargin < 3 , tol = eps; end 
trace = (nargout == 2) 
if x ~=0, dx = x/20; else, dx = 1/20; end 
a = x – dx; fa = feval(fun,a); 
b = x + dx; fb= feval(fun,b); 
% Ache a mudança de sinal 
while (fa > 0) == (fb > 0) 
 dx = 2.0*dx; 
 a = x – dx; fa = feval(fun,a); 
 if (fa > 0) ~= (fb > 0), break; end 
 b=x+dx; fb=feval(fun,b); 
end 
if trace, stpes=[a fa; b fb]; end 
% Loop Principal 
while abs(b –a) > 2.0 * tol * max(abs(b),1.0) 
 c = a + 0.5*(b-a); fc = feval(fun,c); 
 if trace, steps = [steps; [c fc]]; end 
 if (fb > 0) == (fc > 0) 
 b =c; fb = fc; 
 else 
 a =c; fa =fc; 
 end 
end 
 
 Algumas das funções do Matlab são embutidas enquanto outras são distribuídas em arquivos M. A lista atual de 
arquivo M – do Matlab ou do usuário – pode ser vista com o comando type nome_da_função. Por exemplo: 
type eig 
eig is a built-in function. 
type randint1 
function a = randint1(m,n) 
% RANDINT gera uma matriz de números aleatórios 
% randint(m,n) retorna uma matriz m x n com valores entre 0 e 9. 
a = floor(10*rand(m,n)); 
 
 Índice 
 
13. Strings, Mensagens de Erro, Entrada. 
 
 Strings são fornecidas para o Matlab limitadas por aspas simples. 
Exemplo: s = 'Este e um teste.' 
 
 Strings podem ser apresentadas com a função disp. Por exemplo: 
disp('Esta mensagem esta sendo apresentada') 
 
 Mensagens de erro podem ser apresentadas pela função error. 
error('A matriz deve ser simetrica') 
Observação: 
Dentro de um arquivo M esta mensagem pára a execução e sai do arquivo M. 
 
 
 Em um arquivo M o usuário pode ser requisitado a entrar com dados de forma interativa. 
Exemplo: 
iter = input("Entre o numero de interacoes : ') 
Observação: O comando input não funciona com o Notebook (ambiente vinculado ao Microsoft Word). 
 
 Índice 
 
 
 
 
 
 
 
 
14. Manipulação de Arquivos M 
 
 Para-se criar ou editar um arquivo M enquanto mantem-se o Matlab ativo sem perder as variáveis globais no 
ambiente atualmente. 
 
 Pode-se usar a característica de ! para chamar um editor de textos. O comando ! permite a execução de 
comandos do sistema sem sair do Matlab. 
Ex.: !dir, !rename, etc. 
 
 Na edição de textos pode-se usar qualquer editor de texto ascii disponível no sistema. No windows, quando da 
instalação o ambiente Matlab especifica como padrão o notepad. Entretanto, é possível especificar qualquer 
outro editor escolhendo-se a opção Options da barra de menu do Matlab, depois escolhendo a opção Editor 
Preference e digitar o caminho e o nome do editor escolhido. 
 
 Para versões mais antigas do Matlab o procedimento pode ser diferente. 
 
 No windows, assim como no Unix e nos sistemas que permitem multiprocessamento, é possível manter tanto a 
janela do ambiente Matlab, quanto o editor de texto ativos. 
 
Observação: 
 De dentro do Matlab, o comando dir lista o conteúdo do diretório atual, enquanto o comando what lista apenas 
os arquivos M do diretório. Os comandos do Matlab delete e type podem ser usados para apagar um arquivo e 
imprimir um arquivo na tela, respectivamente, e chdir pode ser usado para mudar o diretório de trabalho. 
Enquanto estes comandos podem duplicar os comandos do sistema operacional,eles não precisam de um ! antes. 
Os arquivos M devem estar acessíveis ao Matlab. Nas instalações em mainframe e em rede de workstations, os 
arquivos M pessoais que são armazenados em um subdiretório da área do usuário nomeado <matlab>, por exemplo, 
serão acessíveis ao Matlab a partir de um diretório no qual o usuário está. 
 Índice 
 
15. Formato de Saída 
 
 Os cálculos no Matlab são feito com precisão dupla, mas o formato de apresentação da saída pode ser controlado 
pelos comandos abaixo: 
format short ponto fixo com 4 casas decimais (o padrão) 35.8333 
format long ponto fixo com 14 casas decimais 35.83333333333334 
format short e notação científica com 4 casas decimais 3.5833e+01 
format long e notação científica com 15 casas decimais 35.83333333333334e+01 
format hex hexadecimal 4041eaaaaaaaaaab 
format bank duas casa decimais 35.83 
format rat aproximação racional 215/6 
format + positivo, negativo ou zero + 
 
 
 Uma vez acionado, o comando escolhido permanece até ser mudado. 
 Os comandos de formatação também podem ser acionados a partir do menu de barra do Matlab. Selecione a 
opção Options, dentro dele selecione Numerical Format e mova o cursor sobre o formato desejado. 
 format compact suprime a maioria das linhas em branco; permite que mais informação seja colocada na tela ou 
na página. Ele independe de outros comandos de formatação. 
 
 Índice 
 
16. Cópia 
 
 Para se obter uma cópia em arquivo do que aparece na tela, durante a execução de um comando do Matlab, usa-
se o comando diary. 
 diary <nome do arquivo> 
 Após esse comando tudo que aparecer na tela, será copiado para o arquivo (exceto gráficos) especificado. Se o 
nome do arquivo é omitido, o comando cria um arquivo padrão diary. O comando continua escrevendo no 
arquivo até se digitar: 
diary off - que desabilita a opção de cópia. Para continuar com a cópia, é suficiente digitar: 
diary on - que o Matlab volta a escrever no arquivo. 
 
 Arquivo resultante pode ser editado ou impresso, usando-se qualquer editor de textos. 
 Índice 
 
17. Gráficos 
 
 O Matlab pode produzir gráficos em planos (2D e 3D) e em malhas 3D para superfícies. 
Gráficos em Planos: 
 
 O comando plot cria gráficos de x-y no plano; se x e y são vetores de mesmo tamanho, o comando plot(x,y) abre 
uma janela gráfica e desenha um gráfico x-y dos elementos de x versos os elementos de y. 
Exemplo: 
x=-4:.01:4; 
y=sin(x); 
plot(x,y) 
x é uma partição do domínio com tamanho de grade de 0.01; y é um vetor que dá os valores do seno nos nós da partição 
(relembre que o seno opera em função do ponto). 
 
 Quando na tela gráfica, pressionando qualquer tecla retorna-se para a tela de comando enquanto o 
comando shg (mostra gráfico) e depois retorna-se para tela gráfica atual (função mais atual: figure(gcf)). 
Ex.: Desenhar o gráfico de y=exp(-x.^2) no intervalo –1.5 a 1.5. 
x = -1.5:0.01:1.5; 
y= exp(-x.^2); 
plot(x,y) 
 
Note o comando .^ significando operação ponto do vetor x. 
 
 Também é possível fazer um gráfico de curvas paramétricas. 
Ex.: 
t=0:0.001:2*pi; 
x=cos(3*t); 
y=sin(2*t); 
plot(x,y) 
 
 O comando grid colocauma grade de linhas sobre o gráfico atual. Experimente refazer o comando anterior e 
depois digite grid. 
 
 Gráficos podem ter títulos, eixos rotulados e textos dentro do gráfico. Para isso usa-se os seguintes comandos 
que tem strings como argumentos. 
 title título do gráfico 
 xlabel rótulo do eixo x 
 ylabel rótulo do eixo y 
 gtext texto posicionado interativamente 
 text posiciona texto na posição especificada 
 
Exemplos: 
title ('Funcao y = sin(2*x)') gera o título do gráfico. 
gtext('A Funcao') permite o posicionamento do texto pelo o mouse ou as teclas de seta. (Pressionando qualquer tecla 
posiciona-se o texto no local escolhido.) 
 
 
 Os eixos são autoescalonados. Podem ser modificados utilizando-se o comando axis. Se c=[ xmin, xmax, ymin, 
ymax ] então o comando 
axis(c) ajusta o escalonamento dos eixos para os limites definidos no vetor c. 
Por padrão o comando axis congela o escalonamento atual para os gráficos subsequentes; axis('auto') - retorna-se ao 
auto escalonamento. 
axis('square') - garante que a mesma escala é usada para ambos os eixos. 
axis(image) - apresenta imagem com a mesma relação de aspecto da imagem. 
axis off - desativa os eixos 
axis on - ativa os eixos. 
Para outras características do comando axis veja help axis. 
 
 Há duas formas de se fazer gráficos múltiplos em uma única janela. Considere: 
Ex.: 
x=0:0.01:2*pi; 
y1=sin(x); 
y2=sin(2*x); 
y3=sin(4*x); 
plot(x,y1,x,y2,x,y3) 
Ex: É possível também formar um vetor Y contendo os valores funcionais como colunas: 
x=0:0.01:2*pi; 
Y=[sin(x)', sin(2*x)', sin(4*x)']; 
plot(x,Y) 
 
 
 Outra forma é utilizando o comando hold. 
hold - congela a tela do gráfico atual de forma que gráficos subsequentes são superimpostos sobre o atual 
hold novamente desabilita-se a opção. 
hold on – habilita superposição de gráficos 
hold off – desabilita superposição de gráficos 
 
 É possível alterar os caracteres de tipo de linha e de ponto usados como padrão. O código abaixo ilustra. Digite e 
execute-o no Matlab. 
x=0:0.01:2*pi; 
y1=sin(x); 
y2=sin(2*x); 
y3=sin(4*x); 
plot(x,y1,'--',x,y2,'*',x,y3,'+') 
 
 Observe que uma linha tracejada e uma linha pontilhada, são usadas para as duas primeiras curvas. A terceira usa 
o símbolo + em cada ponto. Os tipos de linhas e marcas são: 
Tipos de linha: sólido (-), tracejado (--), pontilhado (:), traço e ponto (-.) 
Tipos de Marcas: ponto (.), sinal de adição (+), asterisco (*), circulo (o), letra x (x) 
 
 O comando subplot pode ser usado para particionar a tela e permite a apresentação simultânea de vários gráficos 
não superpostos. Por exemplo, tente as linhas abaixo no Matlab. 
x=0:0.01:2*pi; 
y1=sin(x); 
y2=sin(2*x); 
y3=sin(3*x); 
y4=sin(4*x)+cos(x); 
y5=cos(2*x)+sin(3*x); 
subplot(2,2,1), plot(y1) 
subplot(2,2,2), plot(y2) 
subplot(2,2,3), plot(y3) 
subplot(2,2,4), plot(y4) 
 
 Observe que o exemplo permite a apresentação da funções y1, y2, y3 e y4. Modifique o código para apresentar 
também a função y5. 
Impressão de Gráficos. 
 O comando print permite que se faça uma impressão de uma figura na impressora ou para um arquivo, em algum 
formato. Digite help print para maiores detalhes do comando print. 
Gráficos em Malhas 3D 
 É possível desenhar superfícies em malhas 3D com a função mesh. 
 
 O comando mesh(z) cria um desenho 3D em perspectiva dos elementos da matriz z. A superfície da grade é 
definida pelas coordenadas z dos pontos, acima de uma grade retangular no plano x-y. Por exemplo, digite e 
execute o comando mesh(eye(10)). 
 
 Para desenhar o gráfico de uma função z=f(x,y) sobre um retângulo, deve-se primeiro definir os 
vetores xx e yy que dão as partições dos lados do retângulo. Com a função meshgrid (domínio da grade) é 
possível criar uma matriz x, cujas linhas igualam-se a xx e cujas colunas têm comprimentos de yy e, 
similarmente, uma matriz y, cujas linhas igualam-se à matriz yy usando-se o comando: 
[x,y]=meshgrid(xx,yy); 
 Depois, computa-se uma matriz z, obtida pela avaliação da função f sobre as matrizes x e y, com a qual ocomando mesh pode ser utilizada. 
 Por exemplo, digite e execute o código abaixo, com avaliação da função 
z=exp(-x.^2-y.^2) sobre o quadrado definido por [-2,2] x [-2,2]. 
xx=-2:.1:2; 
yy=xx; 
[x,y]=meshgrid(xx,yy); 
z=exp(-x.^2-y.^2); 
mesh(z) 
 
 As primeiras linhas podem ser omitidas, se modificarmos a linha de meshgrid para: 
[x,y]=meshgrid(-2:.1:2, -2:.1:2); 
 
 Outras formas de desenhos estão disponíveis. Por exemplo, veja o help da função plot3. 
Ex. 
x=rand(3,20); 
plot3(x(1,:),x(2,:),x(3,:)) 
 
 Índice 
 
Bibliografia 
Sigmon, K. Matlab Primer. University of Florida. 1992 
Hanselman, D.; Littlefield, B. Matlab Versão do Estudante: Guia do Usuário. Makron Books, São Paulo, 1997. 
Leonard, N.E.; Levine, W.S. Using Matlab to Analyze and Design Control Systems. The Mathworks, Addison Wesley, 
1995. 
Site na internet. 
http://www.mathworks.com 
http://www.mathworks.com/education/

Outros materiais