Tutorial MatLab

Propaganda
Andr
éRi
car
doBackes
backes@f
acom.
uf
u.
br
Uni
ver
si
dadeFeder
aldeUber
l
ândi
a-Facul
dadedecomput
ação
1.
Comandos Iniciais .......................................................................................................... 3
1.1. Definição de Variáveis ........................................................................................... 3
1.2. Separadores de Comandos...................................................................................... 3
2. Retorno de Funções ........................................................................................................ 3
3. Números Complexos ...................................................................................................... 3
4. Criando Matrizes ............................................................................................................ 4
4.1. Definindo uma Matriz ............................................................................................ 4
4.2. Rotinas para criação de uma Matriz ....................................................................... 4
4.3. Acessando elementos de Matrizes.......................................................................... 5
4.4. Concatenação de Matrizes ...................................................................................... 5
5. Operador : ....................................................................................................................... 6
5.1. Operador : e Matrizes ............................................................................................. 7
5.2. Exclusão de Linhas ou Colunas.............................................................................. 7
6. Operações com Matrizes ................................................................................................ 7
7. Criando Funções............................................................................................................. 9
8. Operadores Aritméticos.................................................................................................. 9
9. Operadores Lógicos...................................................................................................... 12
10. Estruturas Condicionais................................................................................................ 12
10.1.
Laço for ............................................................................................................ 12
10.2.
Laço while ........................................................................................................ 13
10.3.
Comandos if e if-else........................................................................................ 13
10.4.
Comando switch case ....................................................................................... 14
10.5.
Comando continue e break ............................................................................... 14
11. Rotinas Utéis ................................................................................................................ 14
11.1.
A função Find ................................................................................................... 14
11.2.
O comando disp ................................................................................................ 14
11.3.
O comando Input .............................................................................................. 15
11.4.
Funções Básicas................................................................................................ 15
12. Comandos Gráficos ...................................................................................................... 16
12.1.
Desenhando Curvas .......................................................................................... 16
12.2.
Estilos de Linhas e Cores do Comando plot e plot3......................................... 17
12.3.
Desenhando Superfícies ................................................................................... 18
12.4.
Comando colorbar ............................................................................................ 20
12.5.
Inserindo Anotações num Gráfico.................................................................... 21
12.6.
O comando figure ............................................................................................. 21
12.7.
Particionando a Tela ......................................................................................... 22
13. Manipulando Strings .................................................................................................... 22
14. Acessando Arquivos ..................................................................................................... 24
14.1.
Comando dlmread ............................................................................................ 25
14.2.
Comando dlmwrite ........................................................................................... 25
14.3.
Comando textread............................................................................................. 25
14.4.
Comando fopen ................................................................................................ 25
14.5.
Comando feof ................................................................................................... 26
14.6.
Comando fclose ................................................................................................ 26
14.7.
Comando fgetl .................................................................................................. 26
14.8.
Comando fprintf ............................................................................................... 26
1. Comandos Iniciais
1.1. Definição de Variáveis
Para atribuir um valor a uma variável, basta digitar o nome da variável, seguida pelo sinal
de atribuição ( = ), seguido pelo valor.
O Matlab é CaseSensitive, ou seja X e x são diferentes.
Ex:
X=7
x=2.3
nome = ‘teste’
1.2. Separadores de Comandos
Podem ser utilizados para separar comandos a virgula ( , ) ou o ponto e virgula ( ; ).
Virgula ( , ): executa o comando e se tiver um resultado, exibe na tela;
Ponto e Virgula ( ; ): executa o comando, não exibindo nenhum resultado;
2. Retorno de Funções
Deve-se tomar um certo cuidado com as funções do MatLab
Diferente das funções existentes em outras linguagens, o MatLab possui funções que
retornam mais de um valor de uma única vez.
Ex:
[a,b] = size(m);
A função size retorna as dimensões de uma matriz. Nesse caso, a recebe o valor da
quantidade de linha e b o valor da quantidade de colunas.
3. Números Complexos
Um número complexo possui a seguinte forma: a + bi
O MatLab entende as letras i e j como √-1, por isso é aconselhado não utilizar tais letras
como nomes de variáveis.
Abaixo seguem algumas rotinas para manipulação de números complexos:
real(C): Retorna a parte real de um número complexo C;
imag(C): Retorna a parte imaginária de um número complexo C;
conj(C): Retorna o conjugado de um número complexo C;
angle(C): Retorna a fase de um número complexo C;
abs(C): Retorna o módulo de um número complexo C;
4. Criando Matrizes
4.1. Definindo uma Matriz
Elementos de uma linha são separados por espaços ou vírgulas.
O final de cada linha é indicado por um ponto-e-vírgula.
A lista de elementos é delimitada por colchetes [ ].
Ex:
Matriz Bidimensional
A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
A=
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
Vetor (Matriz Linha ou Coluna)
B = [16 3 2 13]
B=
16 3 2 13
C = [16; 5; 9; 4]
C=
16
5
9
4
4.2. Rotinas para criação de uma Matriz
O Matlab possui algumas rotinas que permitem a criação e manipulação de matrizes.
Ex:
zeros: matriz de zeros
Z = zeros(3,5)
Z=
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
ones: matriz de uns
Q = ones(5,5)
Q=
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
rand: matriz de números aleatórios com distribuição uniforme
N = rand(2,4)
N=
0.95013 0.60684 0.8913 0.45647
0.23114 0.48598 0.7621 0.018504
randn: matriz de números aleatórios com distribuição normal (Gaussiana)
N = randn(3,3)
N=
-0.4326 0.2877 1.1892
-1.6656 -1.1465 -0.0376
0.1253 1.1909 0.3273
eye: matriz identidade
N=eye(3)
N=
1 0 0
0 1 0
0 0 1
4.3. Acessando elementos de Matrizes
Numa matriz bidimensional, A(i,j) é o elemento da i-ésima linha, j-ésima coluna
Num vetor, B(i) é o i-ésimo elemento.
Ex:
A = 16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
A(2,3) = 11
B = 16
3
2
13
B(2) = 3
4.4. Concatenação de Matrizes
A concatenação de matrizes é feita da mesma maneira como é feita a definição de uma
matriz.
A = [B C; D E];
As matrizes B e C serão organizadas em uma linha, enquanto as matrizes D e E serão
organizadas em outra.
O Total de linhas de A será a soma do número de linhas de B e D;
O Total de colunas de A será a soma do número de colunas de B e C;
Ex:
B = [1 30 7 ; 5 1 18; 1 4 10];
C = [16 2 13; 5 10 8; 9 6 7 ];
D = [16 3 13; 6 7 12; 4 14 1];
E = [5 11 8; 6 7 12; 4 15 1];
A = [B C; D E]
A=
1 30 7 16 2 13
5 1 18 5 10 8
1 4 10 9 6 7
16 3 13 5 11 8
6 7 12 6 7 12
4 14 1 4 15 1
5. Operador :
Trata-se de um poderoso operador do MatLab.
Por meio dele é possível fazer a enumeração intervalada de dados.
Ele permite que selecionemos um intervalo de valores com um determinado espaçamento.
Ele pode ser utilizado de 2 maneiras:
I : k : j:Lista os elementos de i a j, espaçados de k. Se k for positivo, j > i. Se k for
negativo, j < i.
I:j
:Lista os elementos de i a j, espaçados de 1, onde j > i
Ex:
1:10
ans = 1 2 3 4 5 6 7 8 9 10
1:3:27
ans = 1 4 7 10 13 16 19 22 25
60:-7:0
ans = 60 53 46 39 32 25 18 11 4
0:pi/4:pi
ans = 0 0.7854 1.5708 2.3562 3.1416
5.1. Operador : e Matrizes
O operador : é muito útil quando se deseja selecionar apenas uma parte da matriz para
trabalhar.
Ex:
A(1:m, n): primeiros m elementos da n-ésima coluna
A(:, n): todos os elementos da n-ésima coluna
A(:, end): todos os elementos da última coluna
A(m, 1:n): primeiros n elementos da m-ésima linha
A(m, :): todos os elementos da m-ésima linha
A(end,:): todos os elementos da última linha
A(:,[1 2 4]): retorna as colunas 1, 2 e 4
5.2. Exclusão de Linhas ou Colunas
A exclusão de linhas ou colunas é feita definindo a linha ou coluna a ser excluída como
vazia.
Ex:
X = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1];
X(:,2) = [ ]
X=
16 2 13
5 11 8
9 7 12
4 14 1
6. Operações com Matrizes
sum: soma dos elementos de cada coluna
Ex: sum(A)
ans = 34 34 34 34
’ (aspa simples): transposição de uma matriz
Ex: A’
ans = 16 5 9 4
3 10 6 15
2 11 7 14
13 8 12 1
diag: elementos da diagonal da matriz
Ex: diag(A)
ans =
16
10
7
1
inv : inversa de uma matriz
Ex: inv(A)
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 9.796086e-018.
ans =
1.0e+015 *
0.1251 0.3753
-0.3753 -1.1259
0.3753 1.1259
-0.1251 -0.3753
-0.3753 -0.1251
1.1259 0.3753
-1.1259 -0.3753
0.3753 0.1251
size: Retorna a dimensão da matriz M
Ex:
size(A);
ans =
4 4
dot(V1,V2): Produto escalar de V1 por V2
Ex:
dot(A,A)
ans =
378 370 370 378
cross(V1,V2): Produto vetorial de V1 por V2
Ex:
B=[1 2 3; 4 5 6;7 8 9]
cross(B,B)
ans =
0 0 0
0 0 0
0 0 0
trace(M): Traço da matriz M (soma dos elementos na diagonal principal)
Ex:
trace(A)
ans =
34
det(M): Determinante da matriz M
Ex:
Det(A)
ans =
0
[a b] = eig(M): Retorna em A os auto-vetores e em B os autovalores de M
Ex:
[a,b] = eig(A)
a=
-0.5000 -0.8236 0.3764 -0.2236
-0.5000 0.4236 0.0236 -0.6708
-0.5000 0.0236 0.4236 0.6708
-0.5000 0.3764 -0.8236 0.2236
b=
34.0000
0
0
0
0 8.9443
0
0
0
0 -8.9443
0
0
0
0 0.0000
7. Criando Funções
De um modo geral, as funções no MatLab são definidas da seguinte forma:
function [var1,var2,..,varN] = nome_rotina(param1,param2,..,paramN);
Pode se definir para um função quantos parâmetros de entrada se desejar. O mesmo vale
para os parâmetros de saída.
É aconselhado criar um novo arquivo para cada função criada. Também é aconselhado
utilizar o mesmo nome da função para o arquivo dela.
Ex:
function m = soma(a,b);
m = a + b;
8. Operadores Aritméticos
+
: Soma
Realiza a soma de 2 ou mais números.
No caso de matrizes, realiza a soma termo a termo.
Ex:
B=A+A
B=
32 4 6 26
10 22 20 16
18 14 12 24
8 28 30 2
: Subtração
Calcula a diferença entre 2 ou mais números.
No caso de matrizes, calcula a diferença termo a termo.
Ex:
C=A-A
C=
0 0 0
0 0 0
0 0 0
0 0 0
0
0
0
0
/
: Divisão
Realiza a divisão entre dois números.
No caso de matrizes a divisão atua de maneira diferente.
A Expressão
C = A / B;
É equivalente a
C = A * inv(B);
./
: Divisão Termo a Termo
Realiza a divisão entre dois números.
No caso de matrizes, realiza a divisão termo a termo da matriz. Para isso, as matrizes
devem ter o mesmo tamanho.
Ex:
B = A ./ A
B=
1 1 1
1 1 1
1 1 1
1 1 1
1
1
1
1
*
: Multiplicação
Realiza a multiplicação entre dois números.
No caso de matrizes, é calculado o produto matricial.
Ex:
C = A*A
C=
345 257
257 313
281 305
273 281
281
305
313
257
273
281
257
345
.*
: Multiplicação Termo a Termo
Realiza a multiplicação entre dois números.
No caso de matrizes, realiza a multiplicação termo a termo da matriz. Para isso, as matrizes
devem ter o mesmo tamanho.
Ex:
B = A .* A
B=
256 4 9 169
25 121 100 64
81 49 36 144
16 196 225 1
^
: Potência
Realiza a operação de potenciação entre dois números.
No caso de matrizes, é calculado o produto matricial n vezes.
Ex:
C=A^2
C=
345 257
257 313
281 305
273 281
281
305
313
257
273
281
257
345
.^
: Potência Termo a Termo
Realiza a operação de potenciação entre dois números.
No caso de matrizes, realiza a potenciação termo a termo da matriz.
Ex:
B = A .^ A
B=
256 4 9 169
25 121 100 64
81 49 36 144
16 196 225 1
mod : Resto da divisão inteira
Retorna o resto da divisão inteira x/y, onde x e y são números inteiros.
Ex:
mod(3,2)
ans = 1;
mod(13,5)
Ans = 3;
9. Operadores Lógicos
São operadores que servem para comparar dois elementos no MatLab.
Podem ser aplicados à números escalares ou à matrizes.
Se o resultado da comparação for verdadeiros, o operador retorna 1. Se o resultado da
comparação for falso, retorna 0.
Alguns operadores lógicos podem ser aplicados apenas sobre números escalares ou
matrizes. Esses operadores são:
A == B
A<B
A <= B
A>B
A >= B
A ~= B
:Igualdade
:Menor
:Menor ou igual
:Maior
:Maior ou igual
:Diferente
Se o resultado do operador for verdadeiro, 1 é retornado.
Se o resultado do operador for falso, 0 é retornado.
Alguns operadores lógicos podem ser aplicados apenas sobre valores lógicos. Esses
operadores são:
A&B
A|B
~A
xor(A,B)
:AND lógico entre A e B.
:OR lógico entre A e B.
:NOT lógico, ou complementar de A.
:XOR lógico entre A e B.
Se o resultado do operador for verdadeiro, 1 é retornado.
Se o resultado do operador for falso, 0 é retornado.
10. Estruturas Condicionais
São comandos que controlam o fluxo e especificam a ordem em que a computação é feita.
No MATLAB estes comandos são semelhantes aos usados na linguagem C, mas com uma
estrutura diferente.
10.1. Laço for
O laço for é o controlador de fluxo mais simples e usado na programação MATLAB.
for variável = valor_inicial :passo: valor_final
comandos
end;
Se o passo não foi definido, ele assume o valor de 1.
Ex:
for i=1:5,
X(i)=i^2;
end
10.2. Laço while
O laço while testa uma condição e executa uma série de comandos enquanto a condição for
verdadeira.
while condição
comandos
end;
Ex:
a = l;
b = 15;
while a<b
a = a+l
b = b-l
end;
10.3. Comandos if e if-else
O comando if testa uma condição e executa uma ação se tal condição for verdadeira.
if condição
comandos
end;
Já o comando if-else, testa uma condição. Se a condição é verdadeira, executa os comandos
do if; se a condição é falsa, executa os comandos do else.
if condição
comandos do if
else
comandos do else
end;
Ex:
x=1;
y=5;
if x<y
x=x+1;
else
y=y+1;
end;
10.4. Comando switch case
Parecido com o comando if-else, este comando permite que se escolha uma opção entre
várias dependendo do resultado de uma variável ou expressão.
Ex:
switch A(2,2)
case 0
A(2,2) = A(2,2) +1;
case 1
A(2,2) = A(2,2) +3;
case 2
A(2,2) = A(2,2) +5;
otherwise
A(2,2) = 0;
end;
10.5. Comando continue e break
Esses dois comandos servem para quebrar a continuidade de laços de repetição, como o for
e o while. No entanto, existe uma grande diferença entre esses dois comandos.
O comando continue interrompe a execução do laço e faz com que ele avance para a sua
próxima iteração, pulando a que estava.
O comando break interrompe a execução do laço e o termina, fazendo com que o MatLab
pule para a primeira instrução fora do laço.
11. Rotinas Utéis
11.1. A função Find
A função find retorna os índices de uma matriz ou vetor que satisfazem uma determinada
condição, sendo, portanto muito útil para selecionar elementos de uma matriz / vetor.
Ex:
Retornar todos elementos de A que são maiores que 10.
X = find(A>10);
Retornar todos elementos de A que são maiores que 10 e menores que 50.
X = find(A>10 & A<50);
11.2. O comando disp
Quando quisermos exibir o conteúdo de uma matriz sem imprimir seu nome ou imprimir
um pequeno texto, usamos o comando disp. Assim, se a variável temp contiver um valor de
temperatura em graus Celsius, podemos imprimir o valor em uma linha de comando e a
unidade na linha posterior:
Ex:
disp(temp); disp (‘graus Celsius’)
Se o valor de temp for 78, então a saída será:
78 graus Celsius
11.3. O comando Input
Esse comando serve para fazer uma requisição de dados ao usuário.
Pode ser utilizado de 2 maneiras:
user_entry = input('prompt')
user_entry = input('prompt','s')
prompt é a mensagem que será exibida para o usuário.
user_entry é o valor que o usuário digitou.
‘s’ especifica que a entrada do usuário deve ser um texto.
Ex:
x= input(‘Digite o número de iterações: ’)
11.4. Funções Básicas
log(x): Logaritmo natural de x;
log10(x): Logaritmo base 10 de x;
exp(x): Exponencial de x;
sqrt(x): Raiz quadrada de x;
log2(x): Logaritmo base 2 de x;
pow2(x): 2 elevado a potência x;
sin(x): Seno de x (x em radianos);
asin(x) : inverso seno;
cos(x): Coseno de x (x em radianos);
acos(x): inverso do cosseno;
tan(x): Tangente de x (x em radianos);
atan(x): inverso tangente;
sec(x): Secante de x (x em radianos);
asec(x): inverso secante;
csc(x): Cosecante de x (x em radianos);
ceil(x): Arredonda x na direção +∞;
round(x): Arredonda x para o inteiro mais próximo;
floor(x): Arredonda x na direção -∞;
fix(x): Arredonda x na direção de 0;
norm(X): Norma de X;
fft(X): Transformada rápida de Fourier do vetor X;
ifft(X): Inversa da transformada rápida de Fourier do vetor X;
min(X): Menor elemento da matriz X;
max(X): Maior elemento da matriz X;
sort(X): Organiza os elementos do vetor ou matriz X em ordem crescente;
mean(X): média de um vetor;
std(X): Desvio Padrão de um vetor;
size(X): Retorna as dimensões da matriz.
i: número imaginário, igual a √-1;
j: número imaginário, igual a √-1;
real(C): Retorna a parte real de um número complexo C;
imag(C): Retorna a parte imaginária de um número complexo C;
conj(C): Retorna o conjugado de um número complexo C;
angle(C): Retorna a fase de um número complexo C;
abs(C): Retorna o módulo de um número;
zeros(m,n): Cria uma matriz com zeros;
ones(m,n): Cria uma matriz com 1’s.
rand(m,n): Cria uma matriz com números aleatórios;
randn(m,n): Cria uma matriz com números aleatórios, com distribuição normal;
eye(n): Cria uma matriz identidade de ordem n;
diag(X): Retorna os elementos da diagonal da matriz;
inv(X): Retorna a inversa de uma matriz;
dot(V1,V2): Produto escalar de V1 por V2;
cross(V1,V2): Produto vetorial de V1 por V2;
trace(M): Traço da matriz M (soma dos elementos na diagonal principal);
det(M): Determinante da matriz M;
[a b] = eig(M): Retorna em a os auto-vetores e em b os autovalores de M;
mod(x,y): Retorna o resto da divisão inteira x/y;
find(condição da matriz): retorna os índices de uma matriz que concordem com uma
determinada condição;
disp(texto): exibe um texto na Command Window;
input(texto): Faz uma requisição de dados ao usuário na Command Window;
plot(x,y): Desenha um gráfico bidimensional;
plot3(x,y,z): Desenha um gráfico tridimensional;
12. Comandos Gráficos
12.1. Desenhando Curvas
O comando plot serve para desenhar um gráfico bidimensional.
Para desenhar um gráfico tridimensional, utiliza-se o comando plot3
Várias são as formas de uso e opções adicionais para traçado de gráficos.
Plotando Vetores:
plot(Y): plota o vetor Y contra os índices de seus elementos.
plot(X,Y): plota o vetor X contra o vetor Y, onde ambos possuem o mesmo número
de elementos.
plot(X1,Y1, X2,Y2,... Xn,Yn): plota X1 versus Y1, X2 versus Y2,…, Xn versus Yn
num mesmo gráfico.
Plotando Matrizes:
plot(Y): Se Y é uma matriz, plota as colunas de Y versus o índice da linha.
plot(X,Y): Se Y é uma matriz e X um vetor, plota as linhas ou colunas de Y versus
o vetor X. O mesmo vale no caso de X ser a matriz e Y o vetor.
plot(X,Y): Se X e Y são matrizes de mesma dimensão, plota as colunas de X versus
as colunas de Y.
Obs: O comando plot3 funciona de forma semelhante ao comando plot. A diferença é que
ele utiliza 3 parâmetros de dados
Ex:
plot3(X,Y,Z)
12.2. Estilos de Linhas e Cores do Comando plot e plot3
Além do parâmetro referente aos dados a serem exibidos, esses comandos possuem um
outro parâmetro referente à cor e tipo de traço.
plot(X,Y,config)
config é na verdade um conjunto de símbolos escolhidos pelo usuário de forma a alterar o
estilo do gráfico. Se esse parâmetro não foi utilizado, ele assumira a configuração padrão
(linha azul e continua).
Simbolo Cor
Símbolo
Marcador
y
amarelo
.
Ponto
m
c
Lilás
*
Estrela
azul claro
°
Círculo
r
vermelho
+
+
g
verde
x
x
b
azul escuro
s
Quadrado
w
k
branco
preto
d
v
Losango
Triângulo p/
baixo
Triângulo p/
cima
Triângulo p/
esquerda
^
<
>
p
Triângulo p/
direita
Pentagrama
Símbolo Tipo de Linha
--.
:
Linha contínua
Linha tracejada
Traços e pontos
Linha pontilhada
h
hexagrama
Ex:
X = 0:0.05:1;
plot(X,X.^2,’k*’)
plot(X,X.^2,’k --‘)
12.3. Desenhando Superfícies
O MatLab possui vários comandos para o desenho de superfícies.
Entre esses comandos podemos destacar os seguintes: mesh, surf, contour e contour3.
Esses comandos desenham uma superfície que esteja contida numa matriz.
Podem ser usados de 2 formas básicas:
comando(Z): a superfície será desenhada sem nenhuma informação referente aos eixos X e
Y
comando(X,Y,Z): a superficie será desenhada levando em consideração o dominio de X e
Y.
Obs: a palavra comando pode ser substituída por mesh, surf, contour ou contour3.
Para exemplificar o uso desses comandos, utilizaremos do seguinte conjunto de dados:
[X,Y] = meshgrid(-2:.2:2, -2:.2:2);
Z = X.* exp(-X.^2 - Y.^2);
A função meshgrid define um espaço de coordenadas para ser trabalhado.
Ex:
O comando mesh desenha uma malha 3D não preenchida.
O comando surf desenha uma superfície 3D preenchida.
O comando contour desenha um conjunto de curvas de nível em um plano.
O comando contour3 desenha um conjunto de curvas de nível em um espaço
tridimensional.
12.4. Comando colorbar
Esse comando permite desenhar uma barra de cores nos gráficos.
Essa barra representa a variação dos valores do gráfico.
Ex:
mesh(z), colorbar;
12.5. Inserindo Anotações num Gráfico
O Matlab possui várias funções para escrever em gráficos. Entre elas:
title(‘titulo’): Coloca o título “titulo” na posição acima do gráfico.
grid on <off>: grid on mostra uma “grade” na janela do gráfico, grid off apaga a grade.
xlabel(‘nome do eixo X’): Coloca um nome para o eixo X do gráfico.
ylabel(‘nome do eixo Y’): Coloca um nome para o eixo Y do gráfico.
zlabel(‘nome do eixo Z’): Coloca um nome para o eixo Z do gráfico.
axis on <off>: axis on desenha os eixos coordenados, axis off apaga os eixos.
axis([xmin xmax ymin ymax zmin zmax]): ajusta os limites das coordenadas da janela
onde está o gráfico. X variando de xmin à xmax, o mesmo para Y e Z.
text(X,Y,’texto’): Coloca um texto na posição (X,Y) do gráfico. (caso o gráfico seja
tridimensional use text(X,Y,Z,’texto’);
Obs: Esses comandos podem ser utilizados tanto para desenho de gráficos como de
superfícies.
12.6. O comando figure
O comando figure serve para criarmos uma nova janela para a exibição de gráficos.
Sem o uso dele, todos os gráficos serão desenhados na mesma janela, sendo que um novo
gráfico sobrepõe o ultimo que foi desenhado.
Ex:
Esse exemplo desenha os gráficos dos vetores x e y em duas janelas diferentes.
figure(1);
plot(x);
figure(2);
plot(y);
12.7. Particionando a Tela
As vezes é necessário mostrar vários gráficos numa mesma janela. Para isso faz se uso do
comando
subplot(r,c,p)
Esse comando divide a tela em r x c janelas, sendo p é um número entre 1 e r x c que
representa a posição selecionada.
Ex:
subplot(2,1,2),plot(x,y);
Divide a tela em duas linhas e uma coluna, e desenha o gráfico na segunda linha.
Ex:
x= 1:pi/16:8*pi;
subplot(2,1,1),plot(cos(x));
subplot(2,1,2),plot(sin(x));
13. Manipulando Strings
Para o MatLab, uma string é com um vetor linha de caracteres.
A maioria dos comandos vistos até agora, como acesso a elemento e seleção de elementos
de uma matriz / vetor, são aplicáveis no caso das strings.
Ex:
texto= ‘Isso é um teste’
Visualizando um elemento
texto(3)= ‘s’;
Selecionando um trecho da string
texto(3:8) = ‘so é u’;
Apesar de o MatLab ser um software voltado para cálculos matemáticos, possui ainda
diversas rotinas para manipulação de strings. Tais rotinas nos ajudam em tarefas de
comparação de strings entre outras tarefas. Abaixo segue algumas dessas rotinas.
findstr
Procura a string menor na maior e retorna a posição inicial dela.
É Case-Sensitive.
Exemplo:
x=findstr(str1,str2);
strcmp
Compara duas strings. Retorna 1 se iguais, 0 se diferentes. CaseSensitive.
Exemplo:
x=strcmp(str1,str2);
strcmpi
Compara duas strings. Retorna 1 se iguais, 0 se diferentes. Não é CaseSensitive.
Exemplo:
x=strcmpi(str1,str2);
strtok
Separa uma string em duas partes, usando como separador um token.
Exemplo:
[str1,str2] = strtok(string,separador);
strcat
Faz a concatenação de 2 ou mais strings.
Exemplo:
x= strcat(str1,str2);
deblank
Remove espaços do final da string
Exemplo:
x = deblank(string);
sprintf
Escreve dados formatado numa string
Exemplo:
X = sprintf(formato,variavel);
sscanf
Le dados formatados de uma string
x = sscanf(variavel, formato);
OBS: As rotinas sprintf e sscanf necessitam de um parâmetro formato para trabalharem
direito. Esse parâmetro informa como o dado deve ser transformado durante a leitura ou
escrita. Entre os possíveis formatos estão:
%s : texto (string)
%d : decimal
%e : exponencial
%f : ponto fixo (quando usado com sprintf, pode-se definir número de casas. Ex: %12.5f )
int2str
Converte um número inteiro para string;
Ex:
int2str(5)
ans = ‘5’;
num2str
Converte um número qualquer para string;
Ex:
num2str(5.234)
ans = ‘5.234’;
str2num
Converte uma string para um número qualquer.
Ex:
strtonum(‘5.235’);
ans = 5.235;
strtoint
Converte uma string para um número inteiro.
Ex:
str2int(‘52’);
ans = 52;
str2double
Converte uma string para um valor de dupla precisão.
Ex:
strtonum(‘5.235’);
ans = 5.235;
14. Acessando Arquivos
O MatLab possui diversas rotinas para leitura e escrita em arquivos texto e arquivos
binários. Aqui serão expostas as mais relevantes rotinas de leitura e escrita, de modo a
abranger uma classe maior de tipos de arquivos.
14.1. Comando dlmread
dlmread(‘nome do arquivo’,’separador’)
Carrega uma matriz que esteja contida dentro de um arquivo texto.
Cada linha do arquivo corresponde a uma linha da matriz, e as colunas deve estar separadas
pelo caractere separador.
Ex:
M = dlmread(‘matriz.txt’,’ ‘);
14.2. Comando dlmwrite
dlmwrite(‘nome do arquivo’,matriz,’separador’)
Faz exatamente o inverso de dlmread.
Grava uma matriz dentro de um arquivo texto.
Cada linha do arquivo corresponde a uma linha da matriz, e as colunas deve estar separadas
pelo caractere separador.
Ex:
dlmwrite(‘matriz.txt’,M,’ ‘);
14.3. Comando textread
textread(‘arquivo’,’formato’)
Lê um arquivo texto em colunas.
Pode-se definir um formato de leitura (tipo de dados) para cada coluna.
Ex:
[x,y,z]=textread(nome_arquivo,'%d %d %f');
14.4. Comando fopen
fopen(‘nome_arquivo’, ‘permissão’)
Abre um arquivo, com um determinado tipo de permissão, e retorna um valor de
identificação do arquivo para posterior manipulação.
Os modos de permissão podem ser:
Para arquivos binários: 'r' (leitura), 'w' (escrita), 'a' (continuar escrevendo).
Para arquivos binários: 'rt' (leitura), 'wt' (escrita), 'at' (continuar escrevendo).
Ex:
fid = fopen(‘matriz.txt’, ‘rt’);
14.5. Comando feof
feof(id)
Função que verifica se um arquivo que foi aberto com fopen já chegou ao seu final. A
função retorna 1 se esta no fim do arquivo e 0 no caso contrário.
Ex:
X = feof(fid);
14.6. Comando fclose
fclose(id)
Fecha um arquivo aberto com fopen, com base no seu numero de identifcação
Ex:
fclose(fid);
14.7. Comando fgetl
fgetl(id)
Lê a linha atual de um arquivo, e pula para a próxima linha.
A linha é retornada da mesma maneira que se encontra escrita no arquivo, nenhuma
conversão de dados é realizada.
Ex:
fid=fopen('teste.txt','rt');
while ~feof(fid)
tline = fgetl(fid);
disp(tline);
end;
fclose(fid);
14.8. Comando fprintf
fprintf(fid, formato, variavel)
Escreve dados formatados no arquivo. Entre os possíveis formatos estão:
%s : texto (string)
%d : decimal
%e : exponencial
%f : ponto fixo (quando usado com sprintf, pode-se definir número de casas. Ex: %12.5f )
Para finalizar uma linha usa \n, no final da definição do formato.
Ex:
x = 0:0.1:1;
y = [x; exp(x)];
fid = fopen('novo.txt','wt');
fprintf(fid,'%6.2f %12.8f \n',y);
fclose(fid);
Download