Documente Academic
Documente Profesional
Documente Cultură
*Novembro de 1997*
------------------------------------------------------------------------
*Objetivo:*
*Observao:*
------------------------------------------------------------------------
V o *ndice <#Indice>*
------------------------------------------------------------------------
------------------------------------------------------------------------
*Bibliografia <#no18>*
------------------------------------------------------------------------
*1. Acessando o Matlab*
* Para sair:
*>> quit*
ndice <#Indice>
------------------------------------------------------------------------
*2. Utilizando o MATLAB.*
Ex: *x(2,3)*
Esta notao denota um valor na segunda linha e terceira coluna.
Tente: *x(3,5)*
ndice <#Indice>
------------------------------------------------------------------------
*3. Operaes com matrizes e vetores*
* + Adio*
* - Subtrao*
* * Multiplicao*
* ^ Potncia*
* ' Transposio (por exemplo, se
A uma matriz, ento A' sua transposta)*
* \ Diviso esquerda*
* / Diviso direita*
ndice <#Indice>
------------------------------------------------------------------------
*4. Declaraes, expresses e variveis; Salvando uma sesso.*
Ex.:
*a=rand(3);*
*b=rand(5);*
*c=rand(20);*
*who*
*save*
*clear*
Ex.:
*who*
*load*
*who*
* *
ndice <#Indice>
------------------------------------------------------------------------
*5. Funes de Construo de Matrizes*
* x=[1 2 3 1 -1 4];*
*diag(x)*
*diag(A)*
Tente *diag(diag(A))*
ndice <#Indice>
------------------------------------------------------------------------
*6. Loops for, while e blocos if*
*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*
Outro exemplo:
*m=3; n=4;*
*for i=1:m*
* for j=1:n*
* H(i,j)=1/(i+j-1);*
* end*
*end*
*H*
*while relaes*
* declaraes*
* end*
Declaraes (grupo de comando) so executadas repetidamente enquanto as
relaes forem satisfeitas.
*if relaes*
* declaraes*
* elseif relaes*
* declaraes*
* else*
* declaraes*
* end*
Declaraes so executadas se a relao for verdadeira.
*if n<0*
* parity=0;*
*elseif rem(n,2)==0*
* parity=2;*
*else*
* parity=1;*
*end*
*parity*
* *
* < menor*
* > maior*
* <= menor ou igual*
* >= maior ou igual*
* == igual*
* ~= diferente*
* & and*
* | or*
* ~ not*
Ex.:
*3>5*
*ans =*
* 0*
*3<5*
*ans =*
* 1*
*3==5*
*ans =*
* 0*
*3==3*
*ans =*
* 1*
*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*
* if A==B*
* comandos*
* end*
*if any(any(A~=B))*
* comandos*
* end*
*any* retorna "*1*" se um elemento da matriz for igual a *1*.
* Observe que *if A~=B, comandos, end* no far o que se deseja uma
vez que o comando executaria apenas se cada umas das entradas
correspondentes em *A* e *B* diferem. As funes *any *e *all* podem
ser usadas de forma criativa para reduzir as relaes matriciais
para vetores ou escalares. No cdigo acima, a funo *any *foi
chamada duas vezes, pois ela um operador vetorial (seo 8).
ndice <#Indice>
------------------------------------------------------------------------
*7. Funes Escalares.*
ndice <#Indice>
------------------------------------------------------------------------
*8. Funes Vetoriais.*
*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)*
*mean(a')'*
*ans =*
* 0.4649*
* 0.6973*
* 0.5728*
* 0.4679*
* 0.5097*
Tentar:
*max(max(A)) e max(A)*
ndice <#Indice>
------------------------------------------------------------------------
*9. Funes Matriciais.*
* Grande parte da versatilidade do MATLAB vem de suas funes
matriciais. As mais usadas so:
* y = eig(a)*
*y =*
* 2.7594*
* 0.9232*
* -0.3618 + 0.1449i*
* -0.3618 - 0.1449i*
* -0.0613*
*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 <#Indice>
------------------------------------------------------------------------
*10. Edio de Linha de Comando e Chamada*
*ans =*
* 1320*
ndice <#Indice>
------------------------------------------------------------------------
*11. Sub matrizes e notao em dois pontos (:)*
*0.2:0.2:1.2*
* 5:-1:1*
Note que a funo *sin* opera para cada valor de *x*, assim o seno
(coluna da direita) funo do valor de *x* (coluna da esquerda).
Ex.:
*a=[10 20 30 40; 50 60 70 80; 90 100 110 120; 130 140 150 160]*
*a(:,3)*
*a(1:4,:)*
*a(:,[2 4])*
que resulta na submatriz com as colunas *2* e *4* da matriz *a* .
*a(:,[2 4 5])=b(:,1:3)*
*x= [ 1 2 3 4 5 6]*
*x=x(6:-1:1)*
*Observao:*
ndice <#Indice>
------------------------------------------------------------------------
*12 Arquivos M*
*Arquivos Scripts.*
*a= [*
*1 2 3 4*
*5 6 7 8*
*]*
*Arquivos funes*
*Explicao da funo*:
* Uma funo tambm pode ter argumentos de sada mltiplos. Por exemplo:
* Atribuies isoladas tambm podem ser feitas com uma funo que tem
argumentos de sada mltiplos. Por exemplo, *xm = stat(x)* (sem
colchetes em torno de *xm*) atribui a mdia de *x* *xm*.
*Observao*:
*/function a = mdc(a,b)/*
*/% MDC Mximo Divisor Comum/*
*/% mdc(a,b) o mximo 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 no definido quando ambos os nmero so zero')/*
*/else/*
*/ while( b~=0)/*
*/ r = rem(a,b);/*
*/ a = b; b = r;/*
*/ end/*
*/end/*
*/% Inicializao/*
*/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);/*
*type eig*
*/eig is a built-in function./*
*type randint1*
*/function a = randint1(m,n)/*
*/% RANDINT gera uma matriz de nmeros aleatrios/*
*/% randint(m,n) retorna uma matriz m x n com valores entre 0 e 9./*
*/a = floor(10*rand(m,n));/*
*/ /*
ndice <#Indice>
------------------------------------------------------------------------
*13. Strings, Mensagens de Erro, Entrada.*
*Observao:*
Dentro de um arquivo M esta mensagem pra a execuo e sai do arquivo M.
Exemplo:
*iter = input("Entre o numero de interacoes : ')*
ndice <#Indice>
------------------------------------------------------------------------
*14. Manipulao de Arquivos M*
*Observao*:
ndice <#Indice>
------------------------------------------------------------------------
*15. Formato de Sada*
ndice <#Indice>
------------------------------------------------------------------------
*16. Cpia*
* Aps esse comando tudo que aparecer na tela, ser copiado para o
arquivo (*exceto grficos*) especificado. Se o nome do arquivo
omitido, o comando cria um arquivo padro *diary.* O comando
continua escrevendo no arquivo at se digitar:
ndice <#Indice>
------------------------------------------------------------------------
*17. Grficos*
*Grficos em Planos:*
Exemplo:
*x=-4:.01:4;*
*y=sin(x);*
*plot(x,y)*
Ex.:
*t=0:0.001:2*pi;*
*x=cos(3*t);*
*y=sin(2*t);*
*plot(x,y)*
Exemplos:
*title ('Funcao y = sin(2*x)') *gera o ttulo do grfico.
*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 so autoescalonados. Podem ser modificados utilizando-se o
comando axis. Se *c=[ xmin, xmax, ymin, ymax ]* ento o comando
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: possvel tambm 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)*
*x=0:0.01:2*pi;*
*y1=sin(x);*
*y2=sin(2*x);*
*y3=sin(4*x);*
*plot(x,y1,'--',x,y2,'*',x,y3,'+')*
*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)*
*Impresso de Grficos.*
*[x,y]=meshgrid(xx,yy);*
*[x,y]=meshgrid(-2:.1:2, -2:.1:2);*
Ex.
*x=rand(3,20);*
*plot3(x(1,:),x(2,:),x(3,:))*
ndice <#Indice>
------------------------------------------------------------------------
*Bibliografia*
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/>
http://www.mathworks.com/education/