Você está na página 1de 27

A n d r R i c a r d oB a c k e s b a c k e s @f a c o m. u f u .

b r

U n i v e r s i d a d eF e d e r a l d eU b e r l n d i aF a c u l d a d ed ec o mp u t a o

1.

Comandos Iniciais .......................................................................................................... 3 1.1. Definio de Variveis ........................................................................................... 3 1.2. Separadores de Comandos...................................................................................... 3 2. Retorno de Funes ........................................................................................................ 3 3. Nmeros Complexos ...................................................................................................... 3 4. Criando Matrizes ............................................................................................................ 4 4.1. Definindo uma Matriz ............................................................................................ 4 4.2. Rotinas para criao de uma Matriz ....................................................................... 4 4.3. Acessando elementos de Matrizes.......................................................................... 5 4.4. Concatenao de Matrizes ...................................................................................... 5 5. Operador : ....................................................................................................................... 6 5.1. Operador : e Matrizes ............................................................................................. 7 5.2. Excluso de Linhas ou Colunas.............................................................................. 7 6. Operaes com Matrizes ................................................................................................ 7 7. Criando Funes ............................................................................................................. 9 8. Operadores Aritmticos .................................................................................................. 9 9. Operadores Lgicos ...................................................................................................... 12 10. Estruturas Condicionais ................................................................................................ 12 10.1. Lao for ............................................................................................................ 12 10.2. Lao 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 Utis ................................................................................................................ 14 11.1. A funo Find ................................................................................................... 14 11.2. O comando disp ................................................................................................ 14 11.3. O comando Input .............................................................................................. 15 11.4. Funes Bsicas................................................................................................ 15 12. Comandos Grficos ...................................................................................................... 16 12.1. Desenhando Curvas .......................................................................................... 16 12.2. Estilos de Linhas e Cores do Comando plot e plot3......................................... 17 12.3. Desenhando Superfcies ................................................................................... 18 12.4. Comando colorbar ............................................................................................ 20 12.5. Inserindo Anotaes num Grfico.................................................................... 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. Definio de Variveis
Para atribuir um valor a uma varivel, basta digitar o nome da varivel, seguida pelo sinal de atribuio ( = ), seguido pelo valor. O Matlab CaseSensitive, ou seja X e x so 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, no exibindo nenhum resultado;

2. Retorno de Funes
Deve-se tomar um certo cuidado com as funes do MatLab Diferente das funes existentes em outras linguagens, o MatLab possui funes que retornam mais de um valor de uma nica vez. Ex: [a,b] = size(m); A funo size retorna as dimenses de uma matriz. Nesse caso, a recebe o valor da quantidade de linha e b o valor da quantidade de colunas.

3. Nmeros Complexos
Um nmero complexo possui a seguinte forma: a + bi O MatLab entende as letras i e j como -1, por isso aconselhado no utilizar tais letras como nomes de variveis. Abaixo seguem algumas rotinas para manipulao de nmeros complexos: real(C): Retorna a parte real de um nmero complexo C; imag(C): Retorna a parte imaginria de um nmero complexo C; conj(C): Retorna o conjugado de um nmero complexo C; angle(C): Retorna a fase de um nmero complexo C; abs(C): Retorna o mdulo de um nmero complexo C;

4. Criando Matrizes
4.1. Definindo uma Matriz
Elementos de uma linha so separados por espaos ou vrgulas. O final de cada linha indicado por um ponto-e-vrgula. 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 criao de uma Matriz


O Matlab possui algumas rotinas que permitem a criao e manipulao 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 nmeros aleatrios com distribuio 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 nmeros aleatrios com distribuio 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 B(2) = 3

13

4.4. Concatenao de Matrizes


A concatenao de matrizes feita da mesma maneira como feita a definio de uma matriz. A = [B C; D E];

As matrizes B e C sero organizadas em uma linha, enquanto as matrizes D e E sero organizadas em outra. O Total de linhas de A ser a soma do nmero de linhas de B e D; O Total de colunas de A ser a soma do nmero 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 possvel fazer a enumerao intervalada de dados. Ele permite que selecionemos um intervalo de valores com um determinado espaamento. Ele pode ser utilizado de 2 maneiras: I : k : j:Lista os elementos de i a j, espaados de k. Se k for positivo, j > i. Se k for negativo, j < i. I:j :Lista os elementos de i a j, espaados 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. Excluso de Linhas ou Colunas


A excluso de linhas ou colunas feita definindo a linha ou coluna a ser excluda 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. Operaes com Matrizes


sum: soma dos elementos de cada coluna Ex: sum(A) ans = 34 34 34 34 (aspa simples): transposio 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 dimenso 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): Trao 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 Funes
De um modo geral, as funes no MatLab so definidas da seguinte forma: function [var1,var2,..,varN] = nome_rotina(param1,param2,..,paramN); Pode se definir para um funo quantos parmetros de entrada se desejar. O mesmo vale para os parmetros de sada. aconselhado criar um novo arquivo para cada funo criada. Tambm aconselhado utilizar o mesmo nome da funo para o arquivo dela. Ex: function m = soma(a,b); m = a + b;

8. Operadores Aritmticos
+ : Soma Realiza a soma de 2 ou mais nmeros. 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

: Subtrao Calcula a diferena entre 2 ou mais nmeros. No caso de matrizes, calcula a diferena termo a termo. Ex: C=A-A C= 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0

/ : Diviso Realiza a diviso entre dois nmeros. No caso de matrizes a diviso atua de maneira diferente. A Expresso C = A / B; equivalente a C = A * inv(B); ./ : Diviso Termo a Termo Realiza a diviso entre dois nmeros. No caso de matrizes, realiza a diviso 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

* : Multiplicao Realiza a multiplicao entre dois nmeros. 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

.* : Multiplicao Termo a Termo Realiza a multiplicao entre dois nmeros. No caso de matrizes, realiza a multiplicao 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 ^ : Potncia Realiza a operao de potenciao entre dois nmeros. 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

.^ : Potncia Termo a Termo Realiza a operao de potenciao entre dois nmeros. No caso de matrizes, realiza a potenciao 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 diviso inteira Retorna o resto da diviso inteira x/y, onde x e y so nmeros inteiros. Ex: mod(3,2) ans = 1; mod(13,5) Ans = 3;

9. Operadores Lgicos
So operadores que servem para comparar dois elementos no MatLab. Podem ser aplicados nmeros escalares ou matrizes. Se o resultado da comparao for verdadeiros, o operador retorna 1. Se o resultado da comparao for falso, retorna 0. Alguns operadores lgicos podem ser aplicados apenas sobre nmeros escalares ou matrizes. Esses operadores so: 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 lgicos podem ser aplicados apenas sobre valores lgicos. Esses operadores so: A&B A|B ~A xor(A,B) :AND lgico entre A e B. :OR lgico entre A e B. :NOT lgico, ou complementar de A. :XOR lgico 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


So comandos que controlam o fluxo e especificam a ordem em que a computao feita. No MATLAB estes comandos so semelhantes aos usados na linguagem C, mas com uma estrutura diferente.

10.1. Lao for


O lao for o controlador de fluxo mais simples e usado na programao MATLAB. for varivel = valor_inicial :passo: valor_final comandos end; Se o passo no foi definido, ele assume o valor de 1. Ex:

for i=1:5, X(i)=i^2; end

10.2. Lao while


O lao while testa uma condio e executa uma srie de comandos enquanto a condio for verdadeira. while condio 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 condio e executa uma ao se tal condio for verdadeira. if condio comandos end; J o comando if-else, testa uma condio. Se a condio verdadeira, executa os comandos do if; se a condio falsa, executa os comandos do else. if condio 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 opo entre vrias dependendo do resultado de uma varivel ou expresso. 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 laos de repetio, como o for e o while. No entanto, existe uma grande diferena entre esses dois comandos. O comando continue interrompe a execuo do lao e faz com que ele avance para a sua prxima iterao, pulando a que estava. O comando break interrompe a execuo do lao e o termina, fazendo com que o MatLab pule para a primeira instruo fora do lao.

11. Rotinas Utis


11.1. A funo Find
A funo find retorna os ndices de uma matriz ou vetor que satisfazem uma determinada condio, sendo, portanto muito til para selecionar elementos de uma matriz / vetor. Ex: Retornar todos elementos de A que so maiores que 10. X = find(A>10); Retornar todos elementos de A que so maiores que 10 e menores que 50. X = find(A>10 & A<50);

11.2. O comando disp


Quando quisermos exibir o contedo de uma matriz sem imprimir seu nome ou imprimir um pequeno texto, usamos o comando disp. Assim, se a varivel 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, ento a sada ser: 78 graus Celsius

11.3. O comando Input


Esse comando serve para fazer uma requisio de dados ao usurio. Pode ser utilizado de 2 maneiras: user_entry = input('prompt') user_entry = input('prompt','s') prompt a mensagem que ser exibida para o usurio. user_entry o valor que o usurio digitou. s especifica que a entrada do usurio deve ser um texto. Ex: x= input(Digite o nmero de iteraes: )

11.4. Funes Bsicas


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 potncia 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 direo +; round(x): Arredonda x para o inteiro mais prximo; floor(x): Arredonda x na direo -; fix(x): Arredonda x na direo de 0; norm(X): Norma de X; fft(X): Transformada rpida de Fourier do vetor X; ifft(X): Inversa da transformada rpida 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): mdia de um vetor; std(X): Desvio Padro de um vetor; size(X): Retorna as dimenses da matriz. i: nmero imaginrio, igual a -1; j: nmero imaginrio, igual a -1; real(C): Retorna a parte real de um nmero complexo C; imag(C): Retorna a parte imaginria de um nmero complexo C; conj(C): Retorna o conjugado de um nmero complexo C; angle(C): Retorna a fase de um nmero complexo C; abs(C): Retorna o mdulo de um nmero; zeros(m,n): Cria uma matriz com zeros; ones(m,n): Cria uma matriz com 1s. rand(m,n): Cria uma matriz com nmeros aleatrios; randn(m,n): Cria uma matriz com nmeros aleatrios, com distribuio 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): Trao 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 diviso inteira x/y; find(condio da matriz): retorna os ndices de uma matriz que concordem com uma determinada condio; disp(texto): exibe um texto na Command Window; input(texto): Faz uma requisio de dados ao usurio na Command Window; plot(x,y): Desenha um grfico bidimensional; plot3(x,y,z): Desenha um grfico tridimensional;

12. Comandos Grficos


12.1. Desenhando Curvas
O comando plot serve para desenhar um grfico bidimensional. Para desenhar um grfico tridimensional, utiliza-se o comando plot3 Vrias so as formas de uso e opes adicionais para traado de grficos. 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 nmero de elementos. plot(X1,Y1, X2,Y2,... Xn,Yn): plota X1 versus Y1, X2 versus Y2,, Xn versus Yn num mesmo grfico.

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 so matrizes de mesma dimenso, plota as colunas de X versus as colunas de Y. Obs: O comando plot3 funciona de forma semelhante ao comando plot. A diferena que ele utiliza 3 parmetros de dados Ex: plot3(X,Y,Z)

12.2. Estilos de Linhas e Cores do Comando plot e plot3


Alm do parmetro referente aos dados a serem exibidos, esses comandos possuem um outro parmetro referente cor e tipo de trao. plot(X,Y,config) config na verdade um conjunto de smbolos escolhidos pelo usurio de forma a alterar o estilo do grfico. Se esse parmetro no foi utilizado, ele assumira a configurao padro (linha azul e continua).

Simbolo Cor
y m c r g b w k amarelo Lils azul claro vermelho verde azul escuro branco preto

Smbolo
.
* + x s d v ^ < > p

Marcador
Ponto Estrela Crculo + x Quadrado Losango Tringulo p/ baixo Tringulo p/ cima Tringulo p/ esquerda Tringulo p/ direita Pentagrama

Smbolo Tipo de Linha


--. :
Linha contnua Linha tracejada Traos e pontos Linha pontilhada

h Ex: X = 0:0.05:1; plot(X,X.^2,k*) plot(X,X.^2,k --)

hexagrama

12.3. Desenhando Superfcies


O MatLab possui vrios comandos para o desenho de superfcies. Entre esses comandos podemos destacar os seguintes: mesh, surf, contour e contour3. Esses comandos desenham uma superfcie que esteja contida numa matriz. Podem ser usados de 2 formas bsicas: comando(Z): a superfcie ser desenhada sem nenhuma informao referente aos eixos X e Y comando(X,Y,Z): a superficie ser desenhada levando em considerao o dominio de X e Y. Obs: a palavra comando pode ser substituda 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 funo meshgrid define um espao de coordenadas para ser trabalhado.

Ex: O comando mesh desenha uma malha 3D no preenchida.

O comando surf desenha uma superfcie 3D preenchida.

O comando contour desenha um conjunto de curvas de nvel em um plano.

O comando contour3 desenha um conjunto de curvas de nvel em um espao tridimensional.

12.4. Comando colorbar


Esse comando permite desenhar uma barra de cores nos grficos. Essa barra representa a variao dos valores do grfico. Ex: mesh(z), colorbar;

12.5. Inserindo Anotaes num Grfico


O Matlab possui vrias funes para escrever em grficos. Entre elas: title(titulo): Coloca o ttulo titulo na posio acima do grfico. grid on <off>: grid on mostra uma grade na janela do grfico, grid off apaga a grade. xlabel(nome do eixo X): Coloca um nome para o eixo X do grfico. ylabel(nome do eixo Y): Coloca um nome para o eixo Y do grfico. zlabel(nome do eixo Z): Coloca um nome para o eixo Z do grfico. 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 grfico. X variando de xmin xmax, o mesmo para Y e Z. text(X,Y,texto): Coloca um texto na posio (X,Y) do grfico. (caso o grfico seja tridimensional use text(X,Y,Z,texto); Obs: Esses comandos podem ser utilizados tanto para desenho de grficos como de superfcies.

12.6. O comando figure


O comando figure serve para criarmos uma nova janela para a exibio de grficos. Sem o uso dele, todos os grficos sero desenhados na mesma janela, sendo que um novo grfico sobrepe o ultimo que foi desenhado. Ex: Esse exemplo desenha os grficos dos vetores x e y em duas janelas diferentes. figure(1); plot(x);

figure(2); plot(y);

12.7. Particionando a Tela


As vezes necessrio mostrar vrios grficos 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 nmero entre 1 e r x c que representa a posio selecionada. Ex: subplot(2,1,2),plot(x,y); Divide a tela em duas linhas e uma coluna, e desenha o grfico 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 seleo de elementos de uma matriz / vetor, so aplicveis 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 clculos matemticos, possui ainda diversas rotinas para manipulao de strings. Tais rotinas nos ajudam em tarefas de comparao de strings entre outras tarefas. Abaixo segue algumas dessas rotinas. findstr Procura a string menor na maior e retorna a posio 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. No 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 concatenao de 2 ou mais strings. Exemplo: x= strcat(str1,str2); deblank Remove espaos 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 parmetro formato para trabalharem direito. Esse parmetro informa como o dado deve ser transformado durante a leitura ou escrita. Entre os possveis formatos esto: %s : texto (string) %d : decimal %e : exponencial %f : ponto fixo (quando usado com sprintf, pode-se definir nmero de casas. Ex: %12.5f )

int2str Converte um nmero inteiro para string; Ex: int2str(5) ans = 5; num2str Converte um nmero qualquer para string; Ex: num2str(5.234) ans = 5.234; str2num Converte uma string para um nmero qualquer. Ex: strtonum(5.235); ans = 5.235; strtoint Converte uma string para um nmero inteiro. Ex: str2int(52); ans = 52; str2double Converte uma string para um valor de dupla preciso. Ex: strtonum(5.235); ans = 5.235;

14. Acessando Arquivos


O MatLab possui diversas rotinas para leitura e escrita em arquivos texto e arquivos binrios. Aqui sero 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, permisso) Abre um arquivo, com um determinado tipo de permisso, e retorna um valor de identificao do arquivo para posterior manipulao. Os modos de permisso podem ser: Para arquivos binrios: 'r' (leitura), 'w' (escrita), 'a' (continuar escrevendo). Para arquivos binrios: 'rt' (leitura), 'wt' (escrita), 'at' (continuar escrevendo). Ex:

fid = fopen(matriz.txt, rt);

14.5. Comando feof


feof(id) Funo que verifica se um arquivo que foi aberto com fopen j chegou ao seu final. A funo retorna 1 se esta no fim do arquivo e 0 no caso contrrio. Ex: X = feof(fid);

14.6. Comando fclose


fclose(id) Fecha um arquivo aberto com fopen, com base no seu numero de identifcao Ex: fclose(fid);

14.7. Comando fgetl


fgetl(id) L a linha atual de um arquivo, e pula para a prxima linha. A linha retornada da mesma maneira que se encontra escrita no arquivo, nenhuma converso 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 possveis formatos esto: %s : texto (string)

%d : decimal %e : exponencial %f : ponto fixo (quando usado com sprintf, pode-se definir nmero de casas. Ex: %12.5f ) Para finalizar uma linha usa \n, no final da definio 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);