Escolar Documentos
Profissional Documentos
Cultura Documentos
Tutorial Dem at Lab
Tutorial Dem at Lab
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
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
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
B = 16 B(2) = 3
13
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
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
ans = 1.0e+015 * 0.1251 0.3753 -0.3753 -1.1259 0.3753 1.1259 -0.1251 -0.3753
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
.* : 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
.^ : 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.
Ex: disp(temp); disp (graus Celsius) Se o valor de temp for 78, ento a sada ser: 78 graus Celsius
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;
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)
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
hexagrama
figure(2); plot(y);
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;
%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);