Professional Documents
Culture Documents
Departamento de F sica, Universidade Estadual de Maring a Avenida Colombo, 5790 - 87020-900 Maring, Paran, Brasil a a
08 de outubro de 2006.
No tem jeito, a melhor forma de aprender testando comando por comando, a e alguns so bastante intuitivos, mas outros nem tanto, por isso a necessidade de a provar pelo menos uma vez na vida, hehehe.
0.1
clear
COMANDOS DO COMMAND
clear all clear global clear functions clear A,b dir what delete filename mkdir(nome_diretorio) copyfile(sc, dst) type file.txt cd pwd which func_name lookfor palabra help nome_comando % cria um sub-diretorio % copia o arquivo "sc" no arquivo "dst" % mostra o arquivo "file.txt" % muda de diretorio % mostra aonde esta o diretorio atual % localiza uma funcao chamada "func_name" % procura uma palavra em todos os ficheiros *.m % O MAIS IMPORTANTE !!!
0.1.1
% H duas formas de executar comandos: a % a) digitando diretamente no COMMAND ou % b) escrevendo o comando (ou a sequ^ncia de comando) num ficheiro, e % e depois executar este ficheiro apenas digitando o nome dele.
F.C.M. Freire
Nilson
0.1.2
% EX.: 1.0/0.0 0/0
O MatLab/Octave, como o nome ja diz tem como forte, entre outras coisas trabalhar com matrizes, ento vamos comear falando de matrizes. a c
F.C.M. Freire
Nilson
MatLab/Octave
0.2
0.2.1
MATRIZES
OPERACOES BASICAS COM MATRIZES
+ adicicao ou soma - subtracao * multiplicaao c trasposta ^ potenciacao \ divisao n-esquerda / divisao n-direita .* producto elemento a elemento ./ y .\ divisao elemento a elemento .^ elevar a una potencia elemento a elemento Por comodidade, "m." significa a palavre MATRIZ e "v." significa a palavra VETOR. Como exemplo, ns o vamos sempre usar as matrizes: A=magic(3) B=[1 2 3 ; 4 5 6] c=1:4 d=c % uma m. 3x3 % uma m. 2x3 % um v. linha % um v. coluna
N~o tem nada a ver escrever m. com letras maisculas ou a u minscula, eu que prefiro definir m. com letras maiscula u e u e v. com letras minsculas. u EX.: A*2 A-4 % elemento a elemento c^2 c.^2 F.C.M. Freire % ERROR, temos que usar o ponto "." % OK Nilson
0.2.2
eye(4)
0.2.3
% devolveo n. de linhas e colunas da m. A % calcula o n. de elementos do v. x % forma uma m. de zeros do mesmo tamanho da m. A % dem com uns % forma uma m. diagonal A cujos elementos s~o diagonais a % s~o os elementos do v. ja existente x a % forma um v. a partir dos elementos da diagonal de A % cria uma m. diagonal com os elementos da diagonal de A % cria uma m. diagonal de submatrizes a partir de A e B % forma uma m. triangular superior a partir de uma m., % (nao necessariamente quadrada).
F.C.M. Freire
Nilson
MatLab/Octave tril(A) rot90(A,k) % dem com uma m. triangular inferior % Gira de 90 graus a m. retangular A no sentido
% anti-horrio, k um inteiro que pode ser negativo, a e % por "default", k=1 flipud(A) fliplr(A) reshape(A,m,n) % giro horizontal % giro vertical % muda o tamnho da m. A, devolvendo uma m. de tamanho % m-n cujas colunas se obtem a partir de um v. formado % por colunas de A postas uma em continuaao das outras. c~ % EX.: Criar uma Matrix (6x6) a partir de quatro m. (3x3):
A=rand(3) B=diag(diag(A)) C=[A, eye(3); zeros(3), B] % Os elementos do v. x podem ser direcionados a partir de outro v. z z=[1 3 4] x=rand(1,6) x(z) % em duas dimenoes c~ f=[2 4] c=[1 2] A=magic(4) A(f,c)
0.2.4
x=1:10 x=1:2:10
x=1:1.5:10 x=10:-1:1
MatLab/Octave y=sin(x); z=cos(x); [x y z] %%% outros exemplos A=magic(6) A(6, 1:4) A(3, :) A(end, :) A(3:5,:) A([1 2 5],:) % extrae os 4 primeiros elementos da 6a fila % extrae todos os elementos da 3a fila % colocar entre [];
B=eye(size(A)); % substitui linhas de uma matriz por outras. B([2 4 5],:)=A(1:3,:) x=rand(1,5) x=x(5:-1:1) % INVERTE a ordem dos elementos do v. linha A=magic(3) A(:,3:-1:1) % INVERTE a ordem das colunas A(3:-1:1,:) % INVERTE a ordem das linhas A(:) fliplr(A) flipud(A) A=magic(3) B=[] A(:,3)=[] % elimina a ultima coluna % coloca em sequ^ncia, elemento a elemento da m. e % ou ainda, podemos usar:
F.C.M. Freire
Nilson
MatLab/Octave
0.2.5
< > <= >= == ~=
OPERADORES RELACIONAIS
% menor que % maior que % menor o igual que % maior o igual que % igual que % distinto que (tirando este, todos os outros sao semelhantes ao "C".)
% como em "C" e outras linguagens, quando uma comparaao e satisfeita c % o programa retorna "1" (True) ou "0" (False). % EX.: A=[1 2;0 3] B=[4 2;1 5] A==B % compara elemento a elemento.
0.2.6
| OR
OPERADORES LOGICOS
(ou)
0.2.7
Algumas despen~o explicaao, mas vale lembrar que todas ca c~ estas fun~es s~o aplicadas elemento a elemnto de uma m. co a ou de um v., ou ainda, de um escalar. sin(x); cos(x); tan(x); asin(x); acos(x); atan(x); sinh(x); cosh(x); tanh(x); asinh(x); acosh(x); atanh(x);
F.C.M. Freire
Nilson
MatLab/Octave log(x) log10(x) exp(x) sqrt(x) sign(x) rem(x,y) mod(x,y) round(x) fix(x); floor(x); ceil(x); gcd(x) lcm(x) real(x) imag(x) abs(x) angle(x) % mximo divisor comum a % mnimo divisor comum % partes reais % partes imaginarias % valores absolutos % ngulos de fase a % logaritmo natural % logaritmo decimal % exponencial % raz quadrada % devolve -1 se <0, 0 se =0 e 1 si >0 % resto da divisao % similar a rem (Ver diferencias con el Help) % arredonda para o inteiro mais proximo
0.2.8
[xm,im]=max(x) % devolve o maior valor do vetor "x". % Ex.: x=[1 3 5 7 9 4 6 2 0] [xm,im]=max(x) min(x) sum(x) cumsum(x) mean(x) std(x) F.C.M. Freire % idem anterior % soma os elementos de um vetor % devolve um vetor de soma acumulativa dos elementos % valor medio dos elementos de um vetor % desvio padr~o a Nilson
MatLab/Octave prod(x) cumprod(x) % produto dos elementos de um vetor % idem "cumsum" so que com o produto dos elementos
[y,i]=sort(x) % ordenacao do maior para o menor, e a ordem de cada elemento % OBS.: Podemos usar todos este comando em uma matriz, mas temos que fazer % linha por linha ou coluna por coluna.
0.2.9
B = A B = A.
v = poly(A) t = trace(A)
[m,n] = size(A) % devolve o numero de linhas e colunas de uma m. % retangular n = size(A) nf = size(A,1) nc = size(A,2) % tamanho de A % numero de linhas de A % numero de colunas de A
0.2.10
NUMEROS COMPLEXOS
tanto "i" como "j" representam numeros complexos
% Notem a diferena entre: c i=2 2+3i 2+3*i 2+3*j % neste caso "j" nao estava anteriormente definido. c=complex(2,3) real(c) imag(c) F.C.M. Freire Nilson
MatLab/Octave
10
0.3
GRAFICOS
% Fun~es mais conhecidas: co plot() semilogx() semilogy() loglog() figure() title(nome) xlabel(nome) ylabel(nome) legend(curva_1,curva_2,etc) subplot(linha,coluna,posiao) c~ % Opcoes: %-COR-----------------MARCAS-------------------LINHA % b % g % r % c % m % y % k % % % % % % %-% Ex (1) %-% F.C.M. Freire Nilson blue green red cyan magenta yellow black . o x + * s d v ^ < > p h point circle x-mark plus star square diamond triangle (down) triangle (up) triangle (left) triangle (right) pentagram hexagram : -. -solid dotted dashdot dashed
MatLab/Octave
11
x = -pi:0.01:pi; figure(1) plot(x,sin(x)) grid on hold on plot(x,cos(x)) grid on hold on plot(x,asin(x)) %-% Ex (2) %-% min=0; max=2*pi; pontos=100; step=(max-min)/pontos; for i=1:pontos+1 x(i)=min + (i-1)*step; funcoes; % aonde o arquivo funcao contem: % y(i)=sin(x(i)); % z(i)=cos(x(i)); end figure(2) g(1)=plot(x,y) hold on h(1)=plot(x,z) xl(1)=xlabel(x) yl(1)=ylabel(y and z) le(1)=legend(Sin,Cos) ti(1)=title(The Goods) set(g,Color,blue,... F.C.M. Freire Nilson
MatLab/Octave LineStyle,o,... LineWidth,2) set(h,Color,red,... LineStyle,-,... LineWidth,2) set(xl,FontSize,20) set(yl,FontSize,20) set(le,FontSize,18) %-% Ex (3) %-% x=0:1:1e3 y=x.^2 figure(10) plot(x,y) figure(20) loglog(x,y) figure(30) semilogx(x,y) % OBS.: Mostrar como muda as propriedades do grafico % LINHA: estilo, tamanho, cor % MARCAS: estilo, tamanho, cor de fundo e das bordas % NOS EIXOS X,Y,Z: label, cor, localizacao, etc % OBS.: Mostra as funcoes da paleta do plot, como: % a setinha "edit plot" % a setinha "edit text" % a setinha "insert arrow" % "insert line" % Zoom + e % O mais lindo: "rotate 3D" %-% Ex (4) %-% F.C.M. Freire 3D
12
Nilson
MatLab/Octave
13
t = 0:pi/50:10*pi; plot3(sin(t),cos(t),t) axis square grid on [X,Y] = meshgrid([-2:0.1:2]); Z = X.*exp(-X.^2-Y.^2); plot3(X,Y,Z) grid on [X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps; Z = sin(R)./R; surf(X,Y,Z,FaceColor,interp,... EdgeColor,none,... FaceLighting,phong) daspect([5 5 1]) axis tight view(-50,30) camlight left %-% Ex (5) %-% (SUBPLOT) x = -pi:0.01:pi; figure(1) subplot(2,1,1) plot(x,sin(x)) hold on subplot(2,1,1) plot(x,cos(x)) hold on subplot(2,1,2) plot(x,asin(x)) % OBS.: Podemos EXPORTAR OS GRAFICOS como .eps, .jpg, etc F.C.M. Freire Nilson
MatLab/Octave
14
0.4
0.4.1
PROGRAMANDO
USO DI if
% sintaxe: if condicion sentencias end % ou ainda em "bifurcaoes multiplas" c if condicion1 bloque1 elseif condicion2 bloque2 elseif condicion3 bloque3 else bloque4 end EX.: A = ones(3) r = round(rand(1)*10) B = [r 1 1 ; 1 r 1 ; 1 1 r] if A==B fprintf(A Matriz "B" eh uma matriz unitaria) else fprintf(A Matriz "B" nao eh uma matriz unitaria) end % OBS.: Podemos utilizar tambem em matrizes de dimenoes iguais, ex.: c % por default, quando nao se cumpre as condioes 1,2,3 c
F.C.M. Freire
Nilson
MatLab/Octave if A==B % exige que todos os elementos sejam iguais dois a dois
15
0.4.2
USO DO for
% sintaxe: for i=1:n sentencias end % ou ainda: for i=vectorValores sentencias end % ou ainda: "ANINHADOS" for i=1:m for j=1:n sentencias end end EX.: [X,Y] = meshgrid(-10:1:10); R = sqrt(X.^2 + Y.^2) + eps; for i=1:size(X,1) for j=1:size(X,1) Z(i,j) = sin(R(i,j))./R(i,j); end end %%% ou somente escrever assim: Z = sin(R)./R; F.C.M. Freire Nilson % este comando gera as X,Y para plots 3D. % assumira somente os valores do "vectorValores"
MatLab/Octave
16
mesh(X,Y,Z) %%% tente trocar "mesh()" por "surf()" e ver o que faz estes comandos surf(X,Y,Z,FaceColor,interp,... EdgeColor,none,... FaceLighting,phong)
0.4.3
USO DO while
while condicion sentencias end EX.: A = ones(3); B = magic(3); c = 0; while det(A) ~= det(B) r = round(rand(1)*10) B = [r 1 1 ; 1 r 1 ; 1 1 r] c = c + 1; end fprintf(A Matriz "B" se tornou unitaria com %d interacoes,c) % OBS.: lembrando que a condicoes no MatLab pode ser sempre uma % expressao vetorial ou matricial.
0.4.4
EX.:
F.C.M. Freire
Nilson
MatLab/Octave
17
F.C.M. Freire
Nilson
MatLab/Octave
18
0.5
% As formas mais utilizadas: 1) Ctrl+C -> Ctrl+V 2) Criar um ficheiro *.m 3) Com o comando "load nome_arquivo", neste os dados devem ser separados por "Enter" e "Espaos". c EX.: A=load(mega_sena.dat) 4) Usando o comando "textread" EX.: a) Suponha que no arquivo "agenda.dat" contenha: TheGoods Tipo1 12.34 45 sim [names,types,x,y,answer] = textread(agenda.dat,%s %s %f %d %s,1) EX.: b) ignorando uma variavel e delimitando a quantidade de caracteres. [names,types,y,answer] = textread(agenda.dat,%9c %5s %*f %2d %3s,1) EX.: c) Lendo somente o numero um que esta acompanhando a palavra "tipo1" [names,typenum,x,y,answer] = textread(mydata.dat,%s Type%d %f %d %s,1) 4) Com os comandos "fopen" e "fread" FOPEN sintaxe: F.C.M. Freire Nilson
MatLab/Octave
19
[fi,texto] = fopen(filename,c) FUNCOES st = fclose(fi) onde c pode ser: r w a r+ para leitura (de read) para escrita recomeando (de write) c para escrita em continuaao (de append) c para leitura e escrita
AS FUNCOES: fscan, sscanf, fprintf, sprintf, fread e fwrite FSCANF sintaxe: [var1,var2,...] = fscanf(fi,cadeia de controle,size) Onde a cadeia de controle pode ser: %s para cadeias de caracteres %d para variaveis inteira %f para variaveis de ponto flutuante %lf para variaveis de "doble precision" FPRINTF sintaxe: fprintf(fi,cadena de control,var1,var2,...) OBS.: as fs. "sprintf" e "sscanf" em vez de salva-las num arquivo, c as mostra diretamente no video. OBS.: Assim como "fscanf" e "fprintf" estao para "ASCII" as fs c "fread" e "fwrite" estao para "BIN" (numeros binarios). EXEMPLOS: F.C.M. Freire Nilson
MatLab/Octave
20
EX.: 1) Ler a partir de uma arquivo (neste caso: Presenca.dat) OBS.: Com este comando podemos ler somente a primeira linha [name,p1,p2,p3,p4,p5,nota] = textread(presenca.dat,%s %s %s %s %s %s %f,1) EX.: 2) Grava a matriz A (neste caso: A=magic(4)) A=magic(4) f=fopen(magic.dat, a); for i=1:4 for j=1:4 fprintf(f,%f ,A(i,j)); end fprintf(f,\n); end fclose(f);
F.C.M. Freire
Nilson
MatLab/Octave
21
0.6
%%% As vantagens de usar o EDITOR: a) mostrar diferentes cores para diferentes situaoes c b) acusa o (ou nao) fechamento de chaves, parenteses e colchetes c) estrutura automaticamente o uso do TAB para subrotinas d) comenta (ou descomenta) grande qtd. de linhas selecionadas e) executa partes selecionadas f) entre outras vantagens do modo DEBUGGER, citado abaixo. %%% Modo de usar o modo DEBUG: a) colocar os "breakpoints" nos lugares desejados b) clicar em "RUN" ou "F5", na sequencia podemos clicar em: 1) "STEP" ou "F10" 2) "STEP IN" ou "F11" 3) "STEP OUT" ou "Shift+F11" 4) "CONTINUE" ou "F5" 5) "GO UNTIL CURSOR c)sair do modo depurador clicando em "EXIT DEBUG MODE"
F.C.M. Freire
Nilson
MatLab/Octave
22
0.7
ALGORITMO GENETICO
Algoritmos genticos s~o uma famlia de modelos computacionais e a inspirados na evolu~o. ca Numa utilizaao mais abrangente do termo, um algoritmo gentico c~ e qualquer modelo baseado em popula~o que utiliza operadores e ca de seleao e re-combinaao para gerar novos pontos amostrais c~ c~ em um espao de busca. c Muitos algoritmos genticos foram introduzidos por pesquisadores e de uma perspectiva experimental. A maior parte deles tem interesse no algoritmo gentico como e feramenta de otimiza~o. ca EX.: 1) VER CADA PARTE DO EXEMPLO FEITO 2) TESTAR USANDO FALSOS DADOS 3) FAZER UM EXEMPLO DO GUIDE
0.8
FAZER EXEMPLO DO GA
F.C.M. Freire
Nilson
Referncias Bibliogrcas e a
[1] J. G. Jaln, J. I. Rodr o guez, A. Brazlez, Aprenda Matlab 6.1, (Escuela a Tcnica Superior de Ingenieros Industriales Universidad Politcnica de Madrid, e e Madrid). [2] Help do Matlab.
23