manual de introdução ao matlab - Escola Superior Náutica Infante D ...
manual de introdução ao matlab - Escola Superior Náutica Infante D ...
manual de introdução ao matlab - Escola Superior Náutica Infante D ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
ESCOLA NÁUTICA INFANTE D. HENRIQUE<br />
DEPARTAMENTO DE MÁQUINAS MARÍTIMAS<br />
MANUAL<br />
DE INTRODUÇÃO<br />
AO<br />
MATLAB<br />
Por:<br />
Prof. Luis Fernan<strong>de</strong>s Mendonça<br />
E.N.I.D.H. - 2003/2004
CAPÍTULO<br />
1<br />
INTRODUÇÃO AO<br />
MATLAB<br />
O MATLAB é um software interactivo constituído por um conjunto <strong>de</strong> ferramentas<br />
matemáticas que proporcionam uma gran<strong>de</strong> ajuda nos cálculos <strong>de</strong> engenharia. Neste<br />
software as matrizes assumem um papel fundamental.<br />
O nome MATLAB advém da combinação <strong>de</strong> 2 palavras, MATrix LABoratory.<br />
Inicialmente escrito em FORTRAN, o MATLAB é hoje inteiramente escrito em<br />
linguagem C, sendo um sistema integrado, incluindo gráficos e macros programáveis.<br />
No Ensino <strong>Superior</strong>, o MATLAB tornou-se uma ferramenta muito importante,<br />
utilizada em diferentes matérias como a álgebra linear e a análise <strong>de</strong> sistemas <strong>de</strong><br />
controlo, entre outras.<br />
Na indústria, o MATLAB é utilizado na procura e na resolução <strong>de</strong> problemas práticos<br />
<strong>de</strong> engenharia.<br />
PLANO DO CAPÍTULO<br />
1.1 – Command Window<br />
1.2 – Operações Aritméticas<br />
1.3 – Variáveis em MATLAB<br />
1.4 – Comentários e Pontuação<br />
1.5 – Números Complexos<br />
1.6 – Funções Matemáticas<br />
1.7 – Ficheiros Script ou m-files<br />
1.8 – Como Encontrar Ajuda no MATLAB<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.1
1.1 COMMAND WINDOW<br />
Quando iniciamos o MATLAB aparece-nos uma janela, <strong>de</strong>signada por Command window,<br />
através da qual iremos fazer a interacção com o programa. Nela aparece, além <strong>de</strong> uma barra<br />
<strong>de</strong> menus, o símbolo » (prompt), que nos indica que o MATLAB está pronto para executar as<br />
operações e instruções por nós introduzidas.<br />
Commands to get started: intro, <strong>de</strong>mo, help help<br />
Commands for more information: help, whatsnew, info, subscribe<br />
»<br />
No quadro seguinte apresentam-se alguns comandos muito utilizados:<br />
Command Window<br />
clc<br />
diary<br />
diary nome_ficheiro<br />
home<br />
more<br />
Limpa o conteúdo do Command window.<br />
Grava o conteúdo do Command window<br />
para um ficheiro <strong>de</strong> texto chamado diary.<br />
Grava tudo o que se passa durante uma<br />
sessão (excepto gráficos) para o ficheiro<br />
escolhido. Se <strong>de</strong>pois escrevermos diary off<br />
o MATLAB interrompe a gravação do que<br />
se passa. Se introduzirmos o comando diary<br />
on o MATLAB retoma a gravação.<br />
Move o cursor para o canto superior<br />
esquerdo.<br />
Obriga os dados a saírem para o ecrã página<br />
a página. (more on e more off)<br />
O comando more(n) obriga à saída <strong>de</strong> n<br />
linhas por ecrã.<br />
1.2 OPERAÇÕES ARITMÉTICAS<br />
O MATLAB possui todas as operações básicas da matemática po<strong>de</strong>ndo ser utilizado com<br />
uma simples máquina <strong>de</strong> calcular. Aqui estão alguns exemplos:<br />
» 56/8<br />
ans =<br />
7<br />
» 8\56<br />
ans =<br />
7<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.2
» 4+2<br />
ans =<br />
6<br />
» 4*250 + 2*100<br />
ans =<br />
1200<br />
OPERAÇÕES ARITMÉTICAS<br />
OPERAÇÃO SÍMBOLO EXEMPLO<br />
Adição, a + b + 5 + 3<br />
Subtracção, a – b - 23 - 12<br />
Multiplicação, a . b * 3.14 * 0.85<br />
Divisão, a ÷ b / ou \ 56/8 = 8\56<br />
Potenciação, a b ^ 5^2<br />
As regras <strong>de</strong> precedência utilizadas na avaliação das expressões são as seguintes: as<br />
expressões são avaliadas da esquerda para a direita, em que a operação <strong>de</strong> maior precedência<br />
é a potenciação, <strong>de</strong>pois vêm as operações <strong>de</strong> multiplicação e divisão, e por fim as operações<br />
<strong>de</strong> adição e subtracção.<br />
Utilizam-se parênteses para alterar as precedências e o modo como as operações são<br />
avaliadas.<br />
FORMATOS NUMÉRICOS<br />
No MATLAB po<strong>de</strong>mos apresentar os números segundo diversos formatos. Aqui estão<br />
alguns exemplos:<br />
» preco=1/3<br />
preco =<br />
0.3333<br />
» format long preco % Utiliza 16 dígitos<br />
» preco<br />
preco =<br />
0.33333333333333<br />
» format short e % Utiliza 5 dígitos mais expoente<br />
» preco<br />
preco =<br />
3.3333e-001<br />
» format long e % Utiliza 16 dígitos mais expoente<br />
» preco<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.3
preco =<br />
3.333333333333333e-001<br />
» format hex % O número é escrito em formato hexa<strong>de</strong>cimal<br />
» preco<br />
preco =<br />
3fd5555555555555<br />
» format bank % Escreve o número utilizando duas casas <strong>de</strong>cimais<br />
» preco<br />
preco =<br />
0.33<br />
» format rat % Utilizando fracções<br />
» preco<br />
preco =<br />
1/3<br />
» format short % Utiliza 5 dígitos<br />
» preco<br />
preco =<br />
0.3333<br />
Nota: A representação interna dos números não é alterada quando se utilizam estes<br />
comandos<br />
1.3 VARIÁVEIS EM MATLAB<br />
Consi<strong>de</strong>rando o exemplo da página anterior vamos mostrar que po<strong>de</strong>mos efectuar os<br />
mesmos cálculos utilizando variáveis:<br />
» ca<strong>de</strong>rnos=4<br />
ca<strong>de</strong>rnos =<br />
4<br />
» canetas=2<br />
canetas =<br />
2<br />
» itens=ca<strong>de</strong>rnos+canetas<br />
itens =<br />
6<br />
» custo_total=ca<strong>de</strong>rnos*250+canetas*100<br />
custo_total =<br />
1200<br />
Quando se atribuem nomes às variáveis há que ter em conta as seguintes observações:<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.4
• Ter cuidado com a utilização <strong>de</strong> letras maiúsculas e minúsculas.<br />
Ca<strong>de</strong>rno, ca<strong>de</strong>rno e cadErno - são 3 variáveis diferentes para o MATLAB.<br />
• As variáveis <strong>de</strong>vem ter no máximo 19 caracteres pois o MATLAB ignora os restantes<br />
caracteres.<br />
» equetalestenomeparaumavariavel=2<br />
equetalestenomepara =<br />
2<br />
• As variáveis não po<strong>de</strong>m ter símbolos <strong>de</strong> pontuação. É permitido utilizar o símbolo “ _<br />
”.<br />
» e_que_tal_este_nome_para_uma_variavel =0<br />
e_que_tal_este_nome =<br />
0<br />
Variáveis Especiais<br />
Variável on<strong>de</strong> são guardados, por <strong>de</strong>feito, os<br />
Ans<br />
resultados das operações - ans é o diminutivo<br />
<strong>de</strong> ANSwer.<br />
pi Valor <strong>de</strong> π = 3.1416.<br />
Eps<br />
Flops<br />
Unida<strong>de</strong> <strong>de</strong> arredondamento da máquina, i.e.,<br />
o menor valor que adicionado a 1 representa<br />
um número maior que 1<br />
Contador do número <strong>de</strong> operações efectuadas.<br />
Estamos a falar <strong>de</strong> operações em vírgula<br />
flutuante.<br />
Inf Representa +∞, isto é, 1/0<br />
NaN<br />
Not-a-Number, símbolo que representa 0/0 ou<br />
outra expressão não <strong>de</strong>terminada.<br />
MATLAB WORKSPACE<br />
O MATLAB recorda-se <strong>de</strong> todos os comandos que vão sendo introduzidos <strong>ao</strong> longo <strong>de</strong><br />
uma sessão, permitindo que os utilizadores repitam ou aproveitem comandos inseridos<br />
noutras alturas. De igual modo, todas as variáveis que vão sendo <strong>de</strong>finidas <strong>ao</strong> longo da sessão<br />
ficam disponíveis para serem utilizadas em ocasiões futuras.<br />
O “local” on<strong>de</strong> esta informação está guardada <strong>de</strong>signa-se por MATLAB workspace.<br />
De seguida enumeram-se algumas das coisas que po<strong>de</strong>mos fazer, relacionadas com o<br />
workspace:<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.5
• Po<strong>de</strong>mos utilizar as teclas ↑ e ↓ para rever os comandos anteriormente inseridos. Para<br />
alterar a estrutura <strong>de</strong> um <strong>de</strong>sses comando socorrermo-nos das teclas → e ←.<br />
• Se quisermos obter uma lista com as variáveis presentes no workspace basta utilizar o<br />
comando who. Também po<strong>de</strong>mos utilizar o comando whos que juntamente com os<br />
nomes das variáveis refere, também, qual a memória que cada uma ocupa assim como a<br />
sua dimensão - o que é muito útil se as variáveis forem matrizes.<br />
» who<br />
Your variables are:<br />
ans canetas itens<br />
ca<strong>de</strong>rnos custo_total<br />
• Também é possível gravar o conteúdo do Workspace para um ficheiro. Para isso<br />
po<strong>de</strong>mos utilizar o menu [File] [Save Workspace As…] ou utilizar os comandos<br />
save e load. As variáveis presentes no Workspace po<strong>de</strong>m ser gravadas em formato<br />
binário ou formato ascii.<br />
Se utilizarmos apenas o comando save sem especificar qual o nome do ficheiro em que<br />
preten<strong>de</strong>mos guardar a informação, ela será gravado no ficheiro <strong>matlab</strong>.mat.<br />
(Para obter uma explicação mais completa <strong>de</strong>ste comando escreva help save)<br />
» save<br />
Saving to: <strong>matlab</strong>.mat<br />
» save meu<br />
% grava as variáveis em format binário para o ficheiro meu.mat<br />
» save dados canetas ca<strong>de</strong>rnos custo_total -ascii<br />
% as variáveis foram gravadas em formato ascii<br />
% po<strong>de</strong>mos escolher quais as variáveis que queremos gravar<br />
• Po<strong>de</strong>mos remover alguma ou todas as variáveis presentes no Workspace utilizando o<br />
comando clear.<br />
» who<br />
Your variables are:<br />
ans<br />
ca<strong>de</strong>rnos<br />
canetas<br />
custo_total<br />
equetalestenomepara<br />
itens<br />
preco<br />
e_que_tal_este_nome<br />
» clear ca<strong>de</strong>rnos<br />
» who<br />
Your variables are:<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.6
ans<br />
canetas<br />
custo_total<br />
e_que_tal_este_nome<br />
equetalestenomepara<br />
itens<br />
preco<br />
» % se escrevermos o comando clear sem nenhum argumento o MATLAB apaga<br />
todas as variaveis<br />
1.4 COMENTÁRIOS E PONTUAÇÃO<br />
Para introduzir comentários <strong>de</strong>ve utilizar-se o símbolo %.<br />
» canetas=10 % Número <strong>de</strong> canetas%<br />
canetas =<br />
10<br />
» % tudo o que está para a frente <strong>de</strong>ste símbolo % é ignorado<br />
Quando inserimos um comando no MATLAB ele produz um eco, i.e., surge uma<br />
confirmação da operação efectuada no ecrã. Se não quisermos que tal aconteça <strong>de</strong>vemos<br />
utilizar o símbolo ;.<br />
» canetas=10 % este comando produz eco<br />
canetas =<br />
10<br />
» canetas=10; % este comando não produz eco<br />
»<br />
Po<strong>de</strong>mos utilizar a virgula (,) para introduzir vários comando na mesma linha<br />
» canetas=3, vidros=20, lapis=4<br />
canetas =<br />
3<br />
vidros =<br />
20<br />
lapis =<br />
4<br />
Se quisermos concluir um comando na linha seguinte <strong>de</strong>vemos utilizar o símbolo ….<br />
» itens=canetas+ ...<br />
lapis+vidros<br />
itens =<br />
27<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.7
% os ... dizem <strong>ao</strong> Matlab que o resto do comando segue na próxima linha.<br />
» % n<strong>ao</strong> po<strong>de</strong> ser utilizado na continuação <strong>de</strong> comentários nem <strong>de</strong> nomes <strong>de</strong><br />
variáveis.<br />
1.5 NÚMEROS COMPLEXOS<br />
No MATLAB a <strong>de</strong>finição <strong>de</strong> números complexos faz-se <strong>de</strong> uma maneira natural, apesar<br />
disso, eles po<strong>de</strong>m ser <strong>de</strong>finidos utilizando vários métodos:<br />
• Definição <strong>de</strong> um complexo utilizando o i para i<strong>de</strong>ntificar a parte imaginária.<br />
» c1=1-2i<br />
c1 =<br />
1.0000 - 2.0000i<br />
• Definição <strong>de</strong> um complexo utilizando o j para i<strong>de</strong>ntificar a parte imaginária.<br />
» c1=1-2j % o j também serve<br />
c1 =<br />
1.0000 - 2.0000i<br />
• Definição <strong>de</strong> um complexo utilizando o sqrt(-1) para i<strong>de</strong>ntificar a parte imaginária.<br />
» c2=3*(2-sqrt(-1)*3)<br />
c2 =<br />
6.0000 - 9.0000I<br />
• Definição <strong>de</strong> um complexo em função <strong>de</strong> outro complexo.<br />
» c4=6+sin(.5)*i % neste caso foi necessário por sin(.5)*I<br />
c4 =<br />
6.0000 + 0.4794i<br />
• Sempre que aparecem raízes <strong>de</strong> números negativos então o MATLAB consi<strong>de</strong>ra esse<br />
valor como um complexo.<br />
» c3=sqrt(-2)<br />
c3 =<br />
0 + 1.4142i<br />
As operações aritméticas entre complexos são escritas <strong>de</strong> forma semelhante <strong>ao</strong> que se fazia<br />
para os reais.<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.8
» c6=c1+c2<br />
c6 =<br />
7.0000 -11.0000i<br />
» c7=(c1+c2)/c3<br />
c7 =<br />
-7.7782 -4.9497i<br />
Para o MATLAB o resultado <strong>de</strong> uma operação entre números complexos é um complexo.<br />
» c8=i^2 % o quadrado <strong>de</strong> i é o real -1<br />
c8 =<br />
-1.0000 + 0.0000i<br />
Apesar <strong>de</strong> i 2 = -1 ser um real o MATLAB mantêm a parte imaginária do número igual a<br />
zero. Para eliminar a parte imaginária <strong>de</strong> um número complexo utiliza-se a função real.<br />
» c9=real(c6)<br />
c9 =<br />
7<br />
Apresentam-se, agora, as funções utilizadas para estabelecer a correspondência entre a<br />
representação algébrica (z = a+ bi) e a representação polar ( z = r (cos θ + sen θ ), em que r =<br />
|z|):<br />
• A função abs <strong>de</strong>termina o valor absoluto <strong>de</strong> um complexo.<br />
» c1<br />
c1 =<br />
1.0000 - 2.0000i<br />
» mag_c1=abs(c1)<br />
mag_c1 =<br />
2.2361<br />
• A função angle <strong>de</strong>termina o argumento <strong>de</strong> um complexo em radianos.<br />
» angle_c1=angle(c1)<br />
angle_c1 =<br />
-1.1071<br />
» <strong>de</strong>g_c1=angle_c1*180/pi<br />
<strong>de</strong>g_c1 =<br />
-63.4349<br />
Com estas duas funções conseguimos obter as coor<strong>de</strong>nadas polares que <strong>de</strong>sejamos.<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.9
abs(z) - obtemos o valor do módulo r = |z| =<br />
2<br />
a +<br />
b<br />
2<br />
−<br />
angle(z) - obtemos o valor do argumento <strong>de</strong> z, θ = tan 1 b<br />
( )<br />
a = r cosθ , b = r sinθ<br />
a<br />
Outras duas funções utilizadas com números complexos são:<br />
• A função conj dá-nos o complexo conjugado <strong>de</strong> um número complexo.<br />
» conj(c1)<br />
ans =<br />
1.0000 + 2.0000i<br />
• A função imag dá-nos a parte imaginária <strong>de</strong> um complexo.<br />
» imag_c1=imag(c1)<br />
imag_c1 =<br />
-2<br />
• A função real dá-nos a parte real <strong>de</strong> um imaginário.<br />
» real_c1=real(c1)<br />
real_c1 =<br />
1<br />
1.6 FUNÇÕES MATEMÁTICAS<br />
De seguida apresenta-se um quadro com as principais funções matemáticas que o<br />
MATLAB possui.<br />
Alguns exemplos <strong>de</strong> aplicação <strong>de</strong>ssas funções matemáticas são apresentados em seguida:<br />
» x=sqrt(2)/2<br />
x =<br />
0.7071<br />
» y=asin(x)<br />
y =<br />
0.7854<br />
» y_<strong>de</strong>g=y*180/pi<br />
y_<strong>de</strong>g =<br />
45.0000<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.10
TRIGONOMETRICAS<br />
EXPONENTIAL<br />
sin Seno exp Exponencial<br />
sinh Seno hiperbólico log Logaritmo natural<br />
asin Arco cujo o seno é log10 Logaritmo <strong>de</strong> base 10<br />
asinh Arco cujo seno hiperbólico é sqrt Raiz quadrada<br />
cos Co-seno<br />
cosh Co-seno hiperbólico<br />
acos Arco cujo o co-seno é<br />
acosh Arco cujo co-seno hiperbólico é COMPLEXAS<br />
tan Tangente abs Valor Absoluto<br />
tanh Tangente hiperbólica angle Argumento (em radianos)<br />
atan Arco cuja tangente é conj Complexo conjugado<br />
atanh Arco cuja tangente hiperbólica é imag Parte imaginaria<br />
sec Secante real Parte real<br />
sech Secante hiperbólica<br />
asec Arco cujo co-seno hiperbólico é<br />
asech Arco cujo co-seno hiperbólico é<br />
csc Co-secante<br />
csch Co-secante hiperbólica<br />
acsc Arco cuja co-secante é NUMÉRICAS<br />
acsch Arco cuja co-secante hiperbólica é round Arredonda para o inteiro<br />
cot Co-tangente mais próximo<br />
coth Co-tangente hiperbólica rem Resto da divisão<br />
acot Arco cuja co-tangente é sign Sinal <strong>de</strong> um número<br />
acoth Arco cuja co-tangente hiperbólica é<br />
» z=rem(23,4)<br />
z =<br />
3<br />
» z1=23/4<br />
z1 =<br />
5.7500<br />
» a=exp(c1)<br />
a =<br />
-1.1312 - 2.4717i<br />
» sign(1.2)<br />
ans =<br />
1 % a resposta é 1 pois o número é positivo<br />
» sign(-23.4)<br />
ans =<br />
-1 % a resposta é –1 quando o número é negativo<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.11
» sign(0)<br />
ans =<br />
0<br />
1.7 FICHEIROS SCRIPT OU M-FILES<br />
Quando o número <strong>de</strong> comandos a serem introduzidos é muito gran<strong>de</strong> e também quando<br />
queremos reavaliar as expressões entretanto introduzidas torna-se mais prático utilizar<br />
ficheiros <strong>de</strong> texto com comandos <strong>de</strong> MATLAB <strong>de</strong>nominados Script files (ou m-files).<br />
Também po<strong>de</strong>mos utilizar m-files para <strong>de</strong>finir novas funções (function m-file) mas a<br />
abordagem <strong>de</strong>ste tópico será feita no Capítulo 4. Por agora, apenas, vamos consi<strong>de</strong>rar os m-<br />
files como uma lista <strong>de</strong> comandos ou instruções <strong>de</strong> MATLAB.<br />
Para criarmos um novo script (ou m-file) basta procurar o comando [New] localizado no<br />
menu [File] e seguidamente escolher [M-file].<br />
Como um m-file é um ficheiro <strong>de</strong> texto então, po<strong>de</strong> ser feito em qualquer editor <strong>de</strong> texto –<br />
o ficheiro tem <strong>de</strong> ter a extensão .m.<br />
Para executar um m-file basta introduzir o seu nome, por exemplo:<br />
» exemplo<br />
O MATLAB procura o ficheiro exemplo.m e executa todos os comandos como se eles<br />
fossem inseridos directamente no command window.<br />
Ao utilizar m-files tenha em atenção que:<br />
• Os comandos presentes no m-file têm acesso às variáveis anteriormente <strong>de</strong>finidas no<br />
workspace.<br />
• As variáveis <strong>de</strong>finidas no m-file passam a fazer parte do workspace e po<strong>de</strong>m ser<br />
utilizadas após a execução do m-file.<br />
• O comando echo on diz <strong>ao</strong> MATLAB para fazer o eco dos comandos que vai lendo e<br />
executando. O comando echo off faz o contrário.<br />
Exemplo <strong>de</strong> um m-file:<br />
%Exemplo1 – m-files<br />
ca<strong>de</strong>rnos=4;<br />
canetas=input(' Introduza o nº <strong>de</strong> canetas > ');<br />
itens=ca<strong>de</strong>rnos+canetas<br />
custo_total=ca<strong>de</strong>rnos*250+canetas*100<br />
A execução <strong>de</strong>ste m-file produz os seguintes resultados:<br />
» exemplo1<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.12
Introduza o nº <strong>de</strong> canetas > 4<br />
itens =<br />
8<br />
custo_total =<br />
1400<br />
Reparar na utilização da função input. Esta função po<strong>de</strong> receber como valor <strong>de</strong> entrada<br />
qualquer expressão matemática que seja equivalente <strong>ao</strong> valor que se preten<strong>de</strong> introduzir.<br />
» exemplo1<br />
Introduza o nº <strong>de</strong> canetas > round(sqrt(13))+3<br />
itens =<br />
11<br />
custo_total =<br />
1700<br />
Aqui está um quadro com algumas das funções úteis na construção <strong>de</strong> m-files.<br />
FUNÇÕES PARA OS M-FILES<br />
disp(variável)<br />
echo<br />
input<br />
keyboard<br />
pause(n)<br />
waitforbuttonpress<br />
Mostra o valor <strong>de</strong> uma variável sem apresentar<br />
o seu nome.<br />
Controla o eco dos comandos, presentes no<br />
m-file, que vão sendo executados.<br />
(echo on e echo off)<br />
Espera pela introdução <strong>de</strong> um valor pelo<br />
utilizador.<br />
Interrompe a execução <strong>de</strong> um m-file dando<br />
liberda<strong>de</strong> <strong>ao</strong> utilizador para executar outros<br />
comandos. Retoma-se a execução do m-file<br />
fazendo return..<br />
Há uma pausa <strong>de</strong> n segundos na execução.<br />
Existe uma pausa na execução do m-file até<br />
que se carregue numa tecla do rato ou do<br />
teclado.<br />
Exemplo <strong>de</strong> um m-file em que se utiliza o comando keyboard :<br />
%Exemplo2 - .m files<br />
ca<strong>de</strong>rnos=4;<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.13
canetas=2;<br />
keyboard<br />
itens=ca<strong>de</strong>rnos+canetas<br />
custo_total=ca<strong>de</strong>rnos*250+canetas*100<br />
A execução <strong>de</strong>ste m-file produz o seguinte resultado:<br />
» exemplo2<br />
K»<br />
K» who<br />
Your variables are:<br />
a<br />
angle_c1<br />
ans<br />
c1<br />
c2<br />
c3<br />
c4<br />
c6<br />
c7<br />
c8<br />
ca<strong>de</strong>rnos<br />
canetas<br />
custo_total<br />
<strong>de</strong>g_c1<br />
e_que_tal_este_nome<br />
K» return<br />
itens =<br />
6<br />
custo_total =<br />
1200<br />
equetalestenomepara<br />
imag_c1<br />
itens<br />
lapis<br />
mag_c1<br />
preco<br />
real_c1<br />
vidros<br />
x<br />
y<br />
y_<strong>de</strong>g<br />
z<br />
z1<br />
1.8 COMO ENCONTRAR AJUDA NO MATLAB<br />
Existem dois comandos que permitem encontrar ajuda no MATLAB: O comando help e o<br />
comando lookfor.<br />
Um método equivalente <strong>ao</strong> comando help baseia-se na utilização do menu [Help].<br />
» help<br />
HELP topics:<br />
toolbox\local<br />
<strong>matlab</strong>\datafun<br />
<strong>matlab</strong>\elfun<br />
ENIDH/DMM – Luis M. Mendonça<br />
- Local function library.<br />
- Data analysis and Fourier transform functions.<br />
- Elementary math functions.<br />
Pág.14
<strong>matlab</strong>\elmat<br />
<strong>matlab</strong>\funfun<br />
<strong>matlab</strong>\general<br />
<strong>matlab</strong>\color<br />
<strong>matlab</strong>\graphics<br />
<strong>matlab</strong>\iofun<br />
<strong>matlab</strong>\lang<br />
<strong>matlab</strong>\matfun<br />
<strong>matlab</strong>\ops<br />
<strong>matlab</strong>\plotxy<br />
<strong>matlab</strong>\plotxyz<br />
<strong>matlab</strong>\polyfun<br />
<strong>matlab</strong>\sounds<br />
<strong>matlab</strong>\sparfun<br />
<strong>matlab</strong>\specfun<br />
<strong>matlab</strong>\specmat<br />
<strong>matlab</strong>\strfun<br />
<strong>matlab</strong>\d<strong>de</strong><br />
<strong>matlab</strong>\<strong>de</strong>mos<br />
simulink\simulink<br />
simulink\blocks<br />
simulink\sim<strong>de</strong>mos<br />
toolbox\signal<br />
toolbox\i<strong>de</strong>nt<br />
nnet\examples<br />
nnet\nnet<br />
toolbox\robust<br />
mutools\commands<br />
mutools\subs<br />
toolbox\optim<br />
toolbox\splines<br />
toolbox\control<br />
toolbox\mmle3<br />
toolbox\wintools<br />
- Elementary matrices and matrix manipulation.<br />
- Function functions - nonlinear numerical methods.<br />
- General purpose commands.<br />
- Color control and lighting mo<strong>de</strong>l functions.<br />
- General purpose graphics functions.<br />
- Low-level file I/O functions.<br />
- Language constructs and <strong>de</strong>bugging.<br />
- Matrix functions - numerical linear algebra.<br />
- Operators and special characters.<br />
- Two dimensional graphics.<br />
- Three dimensional graphics.<br />
- Polynomial and interpolation functions.<br />
- Sound processing functions.<br />
- Sparse matrix functions.<br />
- Specialized math functions.<br />
- Specialized matrices.<br />
- Character string functions.<br />
- DDE Toolbox.<br />
- Demonstrations and samples.<br />
- SIMULINK mo<strong>de</strong>l analysis and construction functions.<br />
- SIMULINK block library.<br />
- SIMULINK <strong>de</strong>monstrations and samples.<br />
- Signal Processing Toolbox.<br />
- System I<strong>de</strong>ntification Toolbox.<br />
- Neural Network Toolbox examples.<br />
- Neural Network Toolbox.<br />
- Robust Control Toolbox.<br />
- Mu-Analysis and Synthesis Toolbox.<br />
- Mu-tools examples and internal routines.<br />
- Optimization Toolbox.<br />
- Spline Toolbox.<br />
- Control System Toolbox.<br />
- MMLE3 I<strong>de</strong>ntification Toolbox.<br />
- GUI tools for MATLAB for MS Windows.<br />
For more help on directory/topic, type "help topic".<br />
Se já soubermos aquilo que procuramos po<strong>de</strong>mos utilizar o comando help <strong>de</strong> uma forma<br />
mais precisa.<br />
» help general<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.15
General purpose commands.<br />
Managing commands and functions.<br />
help - On-line documentation.<br />
what - Directory listing of M-, MAT- and MEX-files.<br />
type - List M-file.<br />
lookfor - Keyword search through the HELP entries.<br />
which - Locate functions and files.<br />
<strong>de</strong>mo - Run <strong>de</strong>mos.<br />
path - Control MATLAB's search path.<br />
Managing variables and the workspace.<br />
who<br />
- List current variables.<br />
whos - List current variables, long form.<br />
load - Retrieve variables from disk.<br />
save - Save workspace variables to disk.<br />
clear - Clear variables and functions from memory.<br />
pack - Consolidate workspace memory.<br />
size - Size of matrix.<br />
length - Length of vector.<br />
disp - Display matrix or text.<br />
Working with files and the operating system.<br />
cd<br />
- Change current working directory.<br />
dir<br />
- Directory listing.<br />
<strong>de</strong>lete - Delete file.<br />
getenv - Get environment value.<br />
! - Execute operating system command.<br />
unix - Execute operating system command & return result.<br />
diary - Save text of MATLAB session.<br />
Controlling the command window.<br />
cedit - Set command line edit/recall facility parameters.<br />
clc<br />
- Clear command window.<br />
home - Send cursor home.<br />
format - Set output format.<br />
echo - Echo commands insi<strong>de</strong> script files.<br />
more - Control paged output in command window.<br />
Starting and quitting from MATLAB.<br />
quit - Terminate MATLAB.<br />
startup - M-file executed when MATLAB is invoked.<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.16
<strong>matlab</strong>rc<br />
- Master startup M-file.<br />
General information.<br />
info - Information about MATLAB and The MathWorks, Inc.<br />
subscribe - Become subscribing user of MATLAB.<br />
hostid - MATLAB server host i<strong>de</strong>ntification number.<br />
whatsnew - Information about new features not yet documented.<br />
ver<br />
- MATLAB, SIMULINK, and TOOLBOX version information.<br />
» help sqrt<br />
SQRT Square root.<br />
SQRT(X) is the square root of X. Complex results are<br />
produced if X is not positive.<br />
See also SQRTM.<br />
No caso <strong>de</strong> o MATLAB não encontrar informação sobre o tópico pretendido obtemos uma<br />
mensagem <strong>de</strong>ste tipo.<br />
» help controladores<br />
controladores not found.<br />
Se preten<strong>de</strong>rmos procurar comandos que estejam relacionados com <strong>de</strong>terminada palavra ou<br />
conceito po<strong>de</strong>mos utiliza a instrução lookfor<br />
» lookfor complex<br />
CPLXPAIR Sort numbers into complex conjugate pairs.<br />
CONJ Complex conjugate.<br />
IMAG Complex imaginary part.<br />
REAL Complex real part.<br />
CDF2RDF Complex diagonal form to real block diagonal form.<br />
RSF2CSF Real block diagonal form to complex diagonal form.<br />
CPLXDEMO Maps of functions of a complex variable.<br />
CPLXGRID Polar coordinate complex grid.<br />
CPLXMAP Plot a function of a complex variable.<br />
GRAFCPLX Demonstrates complex function plots in MATLAB.<br />
LOGM2 LOGM2(X) is the matrix natural logarithm of X . Complex<br />
CCEPS Complex cepstrum.<br />
PHASE Computes the phase of a complex vector<br />
mixedalg.m: % [MULT,XQO] = MIXEDALG(T,XQI,K) finds the existence of a<br />
complex,diagonal<br />
DSORT Sort complex discrete eigenvalues in <strong>de</strong>scending or<strong>de</strong>r.<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.17
ESORT Sort complex continuous eigenvalues in <strong>de</strong>scending or<strong>de</strong>r<br />
LOGM2 LOGM2(X) is the matrix natural logarithm of X . Complex<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.18
CAPÍTULO<br />
2<br />
MATRIZES E<br />
VECTORES<br />
PLANO DO CAPÍTULO<br />
2.1 – Definição <strong>de</strong> Vectores<br />
2.2 – En<strong>de</strong>reçamento <strong>de</strong> Elementos <strong>de</strong> Um Vector<br />
2.3 – Definição <strong>de</strong> Matrizes<br />
2.4 – Operações com Matrizes<br />
2.5 – Operações com Arrays<br />
2.6 – Manipulação dos Elementos <strong>de</strong> uma Matriz<br />
2.7 – Matrizes Especiais e Funções com Matrizes<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.19
2.1 DEFINIÇÃO DE VECTORES<br />
Quando se preten<strong>de</strong> introduzir um vector <strong>de</strong>ve fazer-se:<br />
» a=[1 2 3 4 5 6]<br />
a =<br />
1 2 3 4 5 6<br />
Também é possível <strong>de</strong>finir um novo vector à custa <strong>de</strong> outro já existente:<br />
» x= [0 .1*pi .2*pi .3*pi .4*pi .5*pi .6*pi .7*pi .8*pi .9*pi pi]<br />
x =<br />
Columns 1 through 7<br />
0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850<br />
Columns 8 through 11<br />
2.1991 2.5133 2.8274 3.1416<br />
» y=sin(x)<br />
y =<br />
Columns 1 through 7<br />
0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511<br />
Columns 8 through 11<br />
0.8090 0.5878 0.3090 0.0000<br />
Exemplo <strong>de</strong> um vector <strong>de</strong> números complexos. (Consegue notar a modificação que se<br />
produz com a introdução dos parênteses)<br />
» u=[1 -2i 3 4 5+6i]<br />
u =<br />
Columns 1 through 4<br />
1.0000 0 - 2.0000i 3.0000 4.0000<br />
Column 5<br />
5.0000 + 6.0000i<br />
» v=[(1 -2i) 3 4 5+6i]<br />
v =<br />
1.0000 - 2.0000i 3.0000 4.0000 5.0000 +<br />
6.0000i<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.20
Na <strong>de</strong>finição <strong>de</strong> vectores um símbolo muito utilizado é o “ : ”. Aqui estão alguns exemplos<br />
da sua utilização.<br />
» x=1:5 % começa em 1 e termina em 5 com incrementos <strong>de</strong> 1<br />
x =<br />
1 2 3 4 5<br />
Se preten<strong>de</strong>rmos utilizar um incremento diferente fazemos:<br />
» y=0:pi/4:pi % começa em 0 e termina em pi com incrementos <strong>de</strong> pi/4<br />
y =<br />
0 0.7854 1.5708 2.3562 3.1416<br />
Também é possível utilizar incrementos negativos:<br />
» z=6:-1:1<br />
z =<br />
6 5 4 3 2 1<br />
Outra maneira <strong>de</strong> <strong>de</strong>finir o vector y=sin(x) é a seguinte.<br />
» y1=(0:0.1:1)*pi<br />
y1 =<br />
Columns 1 through 7<br />
0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850<br />
Columns 8 through 11<br />
2.1991 2.5133 2.8274 3.1416<br />
Existem duas funções que po<strong>de</strong>mos utilizar para criar vectores.<br />
» l=linspace(0,pi,11)<br />
l =<br />
Columns 1 through 7<br />
0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850<br />
Columns 8 through 11<br />
2.1991 2.5133 2.8274 3.1416<br />
» g=logspace(0,2,11)<br />
g =<br />
Columns 1 through 7<br />
1.0000 1.5849 2.5119 3.9811 6.3096 10.0000 15.8489<br />
Columns 8 through 11<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.21
25.1189 39.8107 63.0957 100.0000<br />
Métodos para Definir Vectores<br />
x=[2 2*pi sqrt(2) 2-3j]<br />
x=n i :n f<br />
x=n i :i:n f<br />
x=linspace(primeiro,ultimo,n)<br />
x=logspace(primeiro,ultimo,n)<br />
Cria o vector x com os elementos<br />
especificados. (Os elementos po<strong>de</strong>m ser<br />
expressões ou números complexos).<br />
Cria um vector começando no número n i e<br />
terminando em n f , com incrementos <strong>de</strong> 1.<br />
Cria um vector começando no número n i e<br />
terminando em n f , com incrementos <strong>de</strong> i.<br />
Cria um vector começando no primeiro e<br />
terminando no último, com n elementos.<br />
Cria um vector começando em 10 primeiro e<br />
terminando em 10 último , com n elementos.<br />
2.2 ENDEREÇAMENTO DE ELEMENTOS DE UM VECTOR<br />
Existem vários métodos <strong>de</strong> en<strong>de</strong>reçar (ou <strong>de</strong> ace<strong>de</strong>r) <strong>ao</strong>s elementos <strong>de</strong> um vector.<br />
• Indicando a posição do elemento no vector<br />
» y(3) % queremos o terceiro elemento<br />
ans =<br />
1.5708<br />
» y(5) % queremos o quinto elemento<br />
ans =<br />
3.1416<br />
• Utilizando os “ : ”<br />
» z(1:4) % queremos do primeiro até <strong>ao</strong> quarto elemento<br />
ans =<br />
6 5 4 3<br />
• Usando outro vector para extrair os elementos pela or<strong>de</strong>m pretendida<br />
» y([4 2 3 1])<br />
ans =<br />
2.3562 0.7854 1.5708 0<br />
2.3 DEFINIÇÃO DE MATRIZES<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.22
A introdução <strong>de</strong> uma matriz <strong>de</strong>ve ser feita da seguinte forma: A=[1 2 3; 4 5 6; 7 8 9], em<br />
que o símbolo “ ; ” divi<strong>de</strong> as linhas da matriz.<br />
» A=[1 2 3;4 5 6; 7 8 9]<br />
A =<br />
1 2 3<br />
4 5 6<br />
7 8 9<br />
» B=[1;2;3;4;5]<br />
B =<br />
1<br />
2<br />
3<br />
4<br />
5<br />
Po<strong>de</strong>mos criar uma nova matriz adicionando novos elementos a uma matriz já existente.<br />
»C=[A;10 11 12]<br />
C =<br />
1 2 3<br />
4 5 6<br />
7 8 9<br />
10 11 12<br />
2.4 OPERAÇÕES COM MATRIZES<br />
TRANSPOSTA<br />
Para obter a transposta da matriz A e explicitá-la pela matriz T <strong>de</strong>vemos fazer:<br />
» T=A'<br />
T =<br />
1 4 7<br />
2 5 8<br />
3 6 9<br />
Para vectores tudo se passa <strong>de</strong> modo semelhante,<br />
» x=[-1 0 2]'<br />
x =<br />
-1<br />
0<br />
2<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.23
ADIÇÃO E SUBTRACÇÃO<br />
Consi<strong>de</strong>rando os vectores A e B vamos <strong>de</strong>terminar A+B.<br />
» A=[1 2 3;4 5 6; 7 8 9]<br />
A =<br />
7 8 9<br />
» B=[1 4 7; 2 5 8; 3 6 0]<br />
B =<br />
1 4 7<br />
2 5 8<br />
3 6 0<br />
» A+B<br />
ans =<br />
2 6 10<br />
6 10 14<br />
10 14 9<br />
MULTIPLICAÇÃO<br />
A multiplicação <strong>de</strong> matrizes é efectuada utilizando o símbolo “ * ” e tal como acontece nas<br />
operações <strong>de</strong> soma e subtracção há que ter em consi<strong>de</strong>ração as dimensões das matrizes<br />
» X=[-1 0 2]<br />
X =<br />
-1 0 2<br />
» Y=[-2 -1 1]'<br />
Y =<br />
-2<br />
-1<br />
1<br />
» X*Y<br />
ans =<br />
4<br />
» Y*X<br />
ans =<br />
2 0 -4<br />
1 0 -2<br />
-1 0 2<br />
Quando se multiplica uma constante por um vector o resultado é o seguinte:<br />
» pi*X<br />
ans =<br />
-3.1416 0 6.2832<br />
» pi*Y<br />
ans =<br />
-6.2832<br />
-3.1416<br />
3.1416<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.24
DIVISÃO<br />
Existem dois tipos <strong>de</strong> divisão: a divisão à esquerda (A\b) e a divisão à direita (A/b). Po<strong>de</strong>mos<br />
ver qual a diferença entre estes dois tipos <strong>de</strong> divisão através <strong>de</strong> um exemplo.<br />
Consi<strong>de</strong>re o seguinte sistema <strong>de</strong> equações:<br />
⎡ 1<br />
⎢<br />
⎢<br />
4<br />
⎢⎣<br />
7<br />
2<br />
5<br />
8<br />
A<br />
3 ⎤ ⎡ x<br />
6<br />
⎥ ⎢<br />
⎥<br />
.<br />
⎢<br />
x<br />
0 ⎥⎦<br />
⎢⎣<br />
x<br />
. x<br />
1<br />
2<br />
3<br />
⎤<br />
⎥<br />
⎥<br />
⎥⎦<br />
=<br />
=<br />
⎡ 366<br />
⎢<br />
⎢<br />
804<br />
⎢⎣<br />
351<br />
b<br />
⎤<br />
⎥<br />
⎥<br />
⎥⎦<br />
A=[1 2 3; 4 5 6; 7 8 0]<br />
A =<br />
1 2 3<br />
4 5 6<br />
7 8 0<br />
» b=[366;804;351]<br />
b =<br />
366<br />
804<br />
351<br />
Divisão à esquerda ( x = A\b é solução para A * x = b)<br />
» x=A\b<br />
x =<br />
25.0000<br />
22.0000<br />
99.0000<br />
» A*x<br />
ans =<br />
366<br />
804<br />
351<br />
Divisão à direita ( y = A/b é solução para x * A = b)<br />
» y=A/b<br />
??? Error using ==> /<br />
Matrix dimensions must agree.<br />
» x*A<br />
??? Error using ==> *<br />
Inner matrix dimensions must agree.<br />
Devido as dimensões das matrizes não é possível realizar a divisão à direita teria que se<br />
modificar as dimensões <strong>de</strong> b, fazendo a sua transformada por exemplo.<br />
A relação entre estas duas divisões é dada por: A\b = (b’/A’)’<br />
» A\b<br />
ans =<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.25
25.0000<br />
22.0000<br />
99.0000<br />
» (b'/A')'<br />
ans =<br />
25.0000<br />
22.0000<br />
99.0000<br />
Também conseguimos resolver um sistema <strong>de</strong> equações lineares utilizando a função inv para<br />
calcular a inversa <strong>de</strong> uma matriz - x = A -1 * b – antes, porém, <strong>de</strong>vemos verificar se o sistema<br />
tem uma solução única calculando o seu <strong>de</strong>terminante.<br />
» <strong>de</strong>t(A)<br />
ans =<br />
27<br />
» x=inv(A)*b<br />
x =<br />
25.0000<br />
22.0000<br />
99.0000<br />
2.5 OPERAÇÕES COM ARRAYS<br />
Quando se utiliza o termo “operações com arrays” preten<strong>de</strong>-se referir que as operações<br />
aritméticas são feitas <strong>de</strong> elemento para elemento.<br />
ADIÇÃO E SUBTRACÇÃO<br />
Para a adição e subtracção as operações com array e as operações com matrizes são iguais.<br />
(Utiliza-se os mesmos símbolos)<br />
MULTIPLICAÇÃO E DIVISÃO<br />
A multiplicação <strong>de</strong> array é efectuada elemento a elemento, sendo representada por “ .* ”. Se<br />
A e B têm dimensões iguais então C = A .* B resulta numa matriz em que cada um dos seus<br />
elementos é igual <strong>ao</strong> produto dos elementos individuais <strong>de</strong> A e B, nas mesmas posições<br />
» A=[2 4 6]<br />
A =<br />
2 4 6<br />
» B=[2 2 2]<br />
B =<br />
2 2 2<br />
» C=A.*B<br />
C =<br />
4 8 12<br />
No que diz respeito à divisão; se tivermos D = A ./ B ou E = A .\ B cada elemento <strong>de</strong> D e E é<br />
obtidos através da divisão (à esquerda ou à direita) envolvendo os elementos respectivos <strong>de</strong> A<br />
e B.<br />
» D=A./B<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.26
D =<br />
1 2 3<br />
» E=A.\B<br />
E =<br />
1.0000 0.5000 0.3333<br />
POTENCIAÇÃO<br />
A potenciação elemento a elemento é efectuada utilizando os símbolos “ .^ ”.<br />
» P=A.^B<br />
P =<br />
4 16 36<br />
Contudo, o expoente po<strong>de</strong>rá ser um escalar.<br />
» Pe=A.^3<br />
Pe =<br />
8 64 216<br />
Mas também po<strong>de</strong>mos ter a base como um escalar<br />
» Ps=3.^A<br />
Ps =<br />
9 81 729<br />
Operações com Arrays<br />
Sabendo que : A = [a 1 a 2 … a n ]; B = [b 1 b 2 … b n ]; c – Escalar<br />
Adição com um escalar<br />
Multiplicação com um escalar<br />
A+c = [a 1 +c a 2 +c … a n +c]<br />
A*c = [a 1 *c a 2 *c … a n *c]<br />
Adição A+B = [a 1 +b 1 a 2 +b 2 … a n +b n ]<br />
Multiplicação A.*B = [a 1 .*b 1 a 2 .*b 2 … a n .*b n ]<br />
Divisão à esquerda A.\B = [a 1 .\b 1 a 2 .\b 2 … a n .\b n ]<br />
Divisão à direita A./B = [a 1 ./b 1 a 2 ./b 2 … a n ./b n ]<br />
Potenciação<br />
A.^c = [a 1 .^c a 2 .^c … a n .^c]<br />
c.^A = [c.^a 1 c.^a 2 .^c … c.^a n ]<br />
A.^B = [a 1 .^b 1 a 2 .^b 2 … a n .^b n ]<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.27
2.6 MANIPULAÇÃO DOS ELEMENTOS DE UMA MATRIZ<br />
Po<strong>de</strong>mos alterar o valor <strong>de</strong> apenas um elemento da matriz fazendo:<br />
» A=[1 2 3; 4 5 6; 7 8 0]<br />
A =<br />
1 2 3<br />
4 5 6<br />
7 8 0<br />
» A(3,3)=9 % modifica o elemento na 3ªlinha, 3ªcoluna para 9<br />
A =<br />
1 2 3<br />
4 5 6<br />
7 8 9<br />
Também po<strong>de</strong>mos fazer:<br />
» A(2,2)=A(1,2)+A(3,2)<br />
A =<br />
1 2 3<br />
4 10 6<br />
7 8 9<br />
Outra manipulação dos elementos <strong>de</strong> uma matriz que o MATLAB permite é a seguinte:<br />
» b=A(:) % transformamos uma matriz num vector coluna<br />
b =<br />
1<br />
4<br />
7<br />
2<br />
10<br />
8<br />
3<br />
6<br />
9<br />
Se quisermos criar um matriz B invertendo a or<strong>de</strong>m das linhas <strong>de</strong> A, fazemos:<br />
» B=A(3:-1:1,1:3) % escolhemos as linhas, começando na 3 e acabando na 1<br />
B = % escolhemos as coluna, começando na 1 e acabando na 3<br />
7 8 0<br />
4 5 6<br />
1 2 3<br />
De modo semelhante po<strong>de</strong>mos obter uma submatriz <strong>de</strong> A.<br />
» C=A(1:2,2:3)<br />
C =<br />
2 3<br />
6<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.28
Manipulação dos Elementos <strong>de</strong> uma Matriz<br />
A(l,c)<br />
A(l,:)<br />
A(:,c)<br />
A(:,c)<br />
Resulta uma submatriz <strong>de</strong> A com as linhas <strong>de</strong>finas pelo<br />
vector l e com as colunas <strong>de</strong>finas (ou in<strong>de</strong>xadas) pelo vector<br />
c.<br />
Obtemos uma submatriz <strong>de</strong> A com as linhas <strong>de</strong>finas pelo<br />
vector l e com todas as colunas <strong>de</strong> A.<br />
Resulta uma submatriz <strong>de</strong> A com todas as linhas <strong>de</strong> A e com<br />
as colunas <strong>de</strong>finas (ou in<strong>de</strong>xadas) pelo vector c.<br />
Obtemos um vector coluna com todos os elementos <strong>de</strong> A<br />
tendo estes sido retirados coluna a coluna da matriz A.<br />
2.7 MATRIZES ESPECIAIS E FUNÇÕES COM MATRIZES<br />
De seguida apresentam-se algumas das matrizes especiais que é possível criar utilizando o<br />
MATLAB.<br />
Matrizes Especiais<br />
» zeros(3)<br />
ans =<br />
0 0 0<br />
0 0 0<br />
0 0 0<br />
» ones(3)<br />
ans =<br />
1 1 1<br />
1 1 1<br />
1 1 1<br />
» ones(3)*pi<br />
ans =<br />
3.1416 3.1416 3.1416<br />
3.1416 3.1416 3.1416<br />
3.1416 3.1416 3.1416<br />
» eye(3) % matriz i<strong>de</strong>ntida<strong>de</strong> 3x3<br />
ans =<br />
1 0 0<br />
0 1 0<br />
0 0 1<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.29
Algumas Matrizes Especiais<br />
[] Matriz vazia<br />
eye<br />
Matriz i<strong>de</strong>ntida<strong>de</strong><br />
ones Matriz com todos elementos iguais a 1.<br />
zeros Matriz com todos elementos iguais a 0.<br />
pascal<br />
Matriz (triangular) <strong>de</strong> Pascal.<br />
rand Matriz preenchida aleatoriamente com elementos entre 0 e 1<br />
(distribuição uniforme).<br />
randn<br />
Matriz preenchida aleatoriamente e segundo a distribuição<br />
normal com µ = 0 e σ = 1.<br />
FUNÇÕES COM MATRIZES<br />
O MATLAB possui inúmeras funções com matrizes no quadro seguinte vamos apresentar<br />
apenas algumas.<br />
Funções com Matrizes<br />
<strong>de</strong>t(A)<br />
expm(A)<br />
logm(A)<br />
inv(A)<br />
d=eig(A)<br />
[V,D]=eig(A)<br />
poly(A)<br />
Determinante<br />
Matriz exponencial<br />
Matriz logaritmo<br />
Inversa da matriz A<br />
Valores próprio e vectores próprios.<br />
Polinómio característico<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.30
CAPÍTULO<br />
3<br />
OPERADORES RELACIONAIS,<br />
OPERADORES LÓGICOS E<br />
ESTRUTURAS DE CONTROLO<br />
PLANO DO CAPÍTULO<br />
3.1 – Operadores Relacionais<br />
3.2 – Operadores Lógicos<br />
3.3 – Estrutura <strong>de</strong> Escolha (IF –ELSE-END)<br />
3.4 – Estruturas <strong>de</strong> Repetição (FOR, WHILE)<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.31
3.1 OPERADORES RELACIONAIS<br />
No MATLAB utilizamos os operadores lógicos e relacionais para, juntamente com as<br />
estruturas <strong>de</strong> repetição, controlar a or<strong>de</strong>m <strong>de</strong> execução <strong>de</strong> um conjunto <strong>de</strong> instruções ou<br />
comandos do MATLAB. Os únicos outputs ou resultados possíveis para uma expressão<br />
contendo operadores relacionais e lógicos são 1 (Verda<strong>de</strong>iro) ou 0 (Falso)<br />
» 34<br />
ans =<br />
0 % Falso<br />
Operadores Relacionais<br />
< Menor que<br />
Maior que<br />
>= Maior ou igual a<br />
== Igual a<br />
~= Diferente <strong>de</strong><br />
Estes operadores po<strong>de</strong>m ser utilizados na comparação entre duas matrizes, com as mesmas<br />
dimensões, ou para comparar um escalar com os elementos que compõem a matriz<br />
» A=1:9, B=9-A<br />
A =<br />
1 2 3 4 5 6 7 8 9<br />
B =<br />
8 7 6 5 4 3 2 1 0<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.32
» VF=A>4 % Os zeros correspon<strong>de</strong>m a elementos que são menores que 4<br />
VF =<br />
0 0 0 0 1 1 1 1 1<br />
» A==B<br />
ans =<br />
0 0 0 0 0 0 0 0 0<br />
3.2 OPERADORES LÓGICOS<br />
Os principais operadores lógicos são:<br />
Operadores Lógicos<br />
&<br />
And (e)<br />
| Or (ou)<br />
~<br />
xor(x,y)<br />
Not (negação)<br />
Exclusive Or (Ou exclusivo)<br />
Apresentam-se <strong>de</strong> seguida alguns exemplos da sua aplicação:<br />
» VF=A>4<br />
VF =<br />
0 0 0 0 1 1 1 1 1<br />
» VF1=~(A>4) % negamos a expressão anterior<br />
VF1 =<br />
1 1 1 1 0 0 0 0 0<br />
A expressão seguinte <strong>de</strong>volve uns nas posições em que os elementos da matriz A verificam<br />
a condição, i.e., são maiores do que 2 e menores do que 6.<br />
» VF2=(A>2)&(A
3.3 ESTRUTURA DE ESCOLHA (IF-THEN-END)<br />
Utilizamos esta estrutura quando queremos condicionar a execução <strong>de</strong> uma dada instrução<br />
ou comando <strong>ao</strong> valor (verda<strong>de</strong>iro ou falso) <strong>de</strong> uma da expressão relacional ou lógica.<br />
O quadro seguinte apresenta a sintaxe da estrutura IF-THEN-END.<br />
IF expressão<br />
Comandos<br />
ELSEIF<br />
Comandos<br />
ELSE<br />
Comandos<br />
END<br />
IF expressão<br />
Comandos<br />
END<br />
IF.<br />
Os Comandos são executados apenas se a expressão for verda<strong>de</strong>ira.<br />
Po<strong>de</strong>mos, também, consultar o MATLAB para obter mais informações sobre a estrutura<br />
» help if<br />
IF Conditionally execute statements.<br />
The general form of an IF statement is:<br />
IF variable, statements, END<br />
The statements are executed if the real part of the variable<br />
has all non-zero elements. The variable is usually the result of<br />
expr rop expr where rop is ==, , =, or ~=.<br />
For example:<br />
IF I == J<br />
A(I,J) = 2;<br />
ELSEIF ABS(I-J) == 1<br />
A(I,J) = -1;<br />
ELSE<br />
A(I,J) = 0;<br />
END<br />
Apresentam-se, <strong>de</strong> seguida, dois exemplos que utilizam a estrutura IF.<br />
» laranjas=10;<br />
» Custo=laranjas*20<br />
Custo =<br />
200<br />
» if laranjas>5<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.34
Custo=(1-0.2)*Custo % faz-se um <strong>de</strong>sconto <strong>de</strong> 20%<br />
end<br />
» Custo =<br />
160<br />
Exemplo: Escreva um m-file que:<br />
• Pe<strong>de</strong> <strong>ao</strong> utilizador para introduzir um número.<br />
• Verifica se esse número é maior ou menor do que 5.<br />
• Se for maior imprime no ecrã a palavra GRANDE, caso contrário imprime a<br />
palavra PEGUENO.<br />
n = input('INDIQUE UM NÚMERO MAIOR QUE 0 ->');<br />
if (n > 5)<br />
disp('GRANDE')<br />
elseif (n < 5)<br />
disp('PEQUENO')<br />
else<br />
disp('BATOTA NÃO VALE! O NÚMERO DEVE SER MAIOR OU MENOR QUE 5')<br />
end<br />
3.4 ESTRUTURAS DE REPETIÇÃO<br />
FOR<br />
O ciclo FOR permite a repetição <strong>de</strong> um ou mais comandos. É necessário estabelecer na<br />
sintaxe do comando qual o número <strong>de</strong> repetições a efectuar.<br />
FOR<br />
Variável=expressão<br />
Comando1<br />
Comando2<br />
…<br />
ComandoN<br />
END<br />
FOR<br />
Variável=expressão<br />
Comando<br />
END<br />
Se, no lugar da expressão tivermos um array ou uma matriz então os comandos são<br />
executados um números <strong>de</strong> vezes iguais <strong>ao</strong> número <strong>de</strong> colunas do array ou matriz.<br />
Po<strong>de</strong>mos consultar o MATLAB para obter mais informações sobre a estrutura FOR.<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.35
» help for<br />
FOR Repeat statements a specific number of times.<br />
The general form of a FOR statement is:<br />
FOR variable = expr, statement, ..., statement END<br />
The columns of the expression are stored one at a time in<br />
the variable and then the following statements, up to the<br />
END, are executed. The expression is often of the form X:Y,<br />
in which case its columns are simply scalars. Some examples<br />
(assume N has already been assigned a value).<br />
FOR I = 1:N,<br />
FOR J = 1:N,<br />
A(I,J) = 1/(I+J-1);<br />
END<br />
END<br />
FOR S = 1.0: -0.1: 0.0, END steps S with increments of -0.1<br />
FOR E = EYE(N), ... END sets E to the unit N-vectors.<br />
De seguida apresentamos alguns exemplos do uso <strong>de</strong>sta estrutura.<br />
» for n=1:10<br />
x(n)=sin(n*pi/10);<br />
n=10;<br />
end<br />
» x<br />
x =<br />
Columns 1 through 7<br />
0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090<br />
Columns 8 through 10<br />
0.5878 0.3090 0.0000<br />
» for n=1:5<br />
for m=5:-1:1<br />
A(n,m)=n^2+m^2;<br />
end<br />
disp(n)<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.36
end<br />
1<br />
2<br />
3<br />
4<br />
5<br />
» A<br />
A =<br />
2 5 10 17 26<br />
5 8 13 20 29<br />
10 13 18 25 34<br />
17 20 25 32 41<br />
26 29 34 41 50<br />
Exemplo: Faça um m-file que preencha uma matriz. Peça <strong>ao</strong> utilizador o números <strong>de</strong> linhas<br />
e <strong>de</strong> colunas que ele <strong>de</strong>seja para a matriz.<br />
n=1;<br />
s=1;<br />
disp('PREENCHIMENTO DE UMA MATRIZ')<br />
n = input('INDIQUE O NÚMERO DE LINHAS ->');<br />
s = input('INDIQUE O NÚMERO DE COLUNAS ->');<br />
for i=1:n,<br />
for j=1:s,<br />
a(i,j)=1/(i+j-1);<br />
end<br />
end<br />
disp(' A MATRIZ É:')<br />
disp(a)<br />
WHILE<br />
O ciclo WHILE é executado enquanto a expressão for verda<strong>de</strong>ira.<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.37
WHILE Variável<br />
Comando1<br />
Comando2<br />
…<br />
ComandoN<br />
END<br />
WHILE Variável<br />
Comando<br />
END<br />
Consultando o MATLAB obtemos a seguinte informação sobre a estrutura WHILE.<br />
» help while<br />
WHILE Repeat statements an in<strong>de</strong>finite number of times.<br />
The general form of a WHILE statement is:<br />
WHILE variable, statement, ..., statement, END<br />
The statements are executed while the variable has all<br />
non-zero elements. The variable is usually the result of<br />
expr rop expr where rop is ==, , =, or ~=.<br />
For example (assuming A already <strong>de</strong>fined):<br />
E = 0*A; F = E + EYE(E); N = 1;<br />
WHILE NORM(E+F-E,1) > 0,<br />
E = E + F;<br />
F = A*F/N;<br />
N = N + 1;<br />
END<br />
De seguida apresentamos um exemplo <strong>de</strong> utilização da estrutura WHILE.<br />
» n=10; % queremos preencher um vector com os números <strong>de</strong> 1 a 10<br />
i=1;<br />
while i
CAPÍTULO<br />
4<br />
GRÁFICOS<br />
PLANO DO CAPÍTULO<br />
4.1 – O comando plot<br />
4.2 – Tipo <strong>de</strong> linhas e <strong>de</strong> cores<br />
4.3 – Grid and Labels<br />
4.4– Comando hold<br />
4.5– Subplots<br />
4.6– Utilizar várias janelas com figuras<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.39
4.1 O COMANDO PLOT<br />
»x=linspace(0,2*pi,30);<br />
»y=sin(x);<br />
»plot(x,y)<br />
»z=cos(x);<br />
»plot(x,y,x,z)<br />
Po<strong>de</strong>mos traçar várias funções no mesmo gráfico utilizando vários argumentos no comando<br />
plot.<br />
»plot(x,y,z)<br />
??? Error using ==> plot<br />
Not enough input arguments.<br />
Se um dos argumentos for uma matriz e o outro for um vector o <strong>matlab</strong> representa cada<br />
coluna da matriz vs o vector.<br />
»W=[y;z];<br />
»plot(x,W)<br />
»plot(W,x)<br />
»plot(y)<br />
»length(y)<br />
ans =<br />
30<br />
plot(1:length(y),y)<br />
»k=1:30<br />
»kk=i+1.1*i*j<br />
»plot(kk)<br />
%plot(real(k),imag(k))<br />
5.2 - Tipo <strong>de</strong> linhas e cores<br />
Nós po<strong>de</strong>mos <strong>de</strong>finir qual as cores e o tipo <strong>de</strong> linha que preten<strong>de</strong>mos introduzindo mais<br />
argumentos no comando plot<br />
Cores: Se não for especificado o tipo <strong>de</strong> cores que que se preten<strong>de</strong> para o gráfico o <strong>matlab</strong><br />
começa no amarelo e faz um ciclo pelas seis cores disponíveis.<br />
Linestyle: a linha utilizada, por <strong>de</strong>feito, é o traço continuo.<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.40
plot(x,y,'g:',x,z,'r-') % utilizando linhas para unir os pontos<br />
plot(x,y,'g:',x,z,'r-',x,y,'wo',x,z,'c+')<br />
assinalando cada ponto<br />
% também com símbolos<br />
plot(x,y,'wo',x,z,'c+') % apenas com símbolos<br />
LETRA<br />
y<br />
m<br />
c<br />
r<br />
g<br />
b<br />
w<br />
k<br />
CORES<br />
amarelo<br />
magenta<br />
cyan<br />
encarnado<br />
ver<strong>de</strong><br />
azul<br />
branco<br />
preto<br />
SÍMBOLO<br />
TIPO DE LINHA<br />
- linha sólida<br />
: ponteada<br />
-. traço - ponto<br />
-- traço interropido<br />
SÍMBOLO<br />
MARKERS<br />
. ponto<br />
o<br />
círculo<br />
x<br />
x-mark<br />
+ sinal +<br />
* Estrela<br />
4.3 GRIDS AND LABELS<br />
plot(x,y,x,z)<br />
grid<br />
grid<br />
grid on<br />
grid off<br />
xlabel ('variavel in<strong>de</strong>pen<strong>de</strong>nte x')<br />
ylabel ('variaveis <strong>de</strong>pen<strong>de</strong>ntes y e z')<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.41
title ('Seno e Coseno')<br />
Po<strong>de</strong>mos introduzir texto em qualquer parte do gráfico utilizando comando text e as<br />
respectivas coor<strong>de</strong>nadas.<br />
text(2.5,0.7,'sin(x)')<br />
gtext('cos (x)') %utilizando o rato para escolher a posição<br />
4.4 COMANDO HOLD<br />
plot (x,y)<br />
plot(x,z)<br />
hold<br />
Current plot held<br />
plot(x,y)<br />
plot(x,y,'m')<br />
4.5 – SUBPLOTS<br />
O comando subplot(m,n,p) subdivi<strong>de</strong> a figure windows numa matriz m por n e a área activa<br />
correspon<strong>de</strong> à posição p.<br />
a=2*sin(x).*cos(x);<br />
b=sin(x)./(cos(x)+eps);<br />
subplot(2,2,1)<br />
plot(x,y),axis([0 2*pi -1 1]),title('sin(x)')<br />
subplot(2,2,2)<br />
plot(x,z),axis([0 2*pi -1 1]),title('cos(x)')<br />
subplot(2,2,3)<br />
plot(x,a),axis([0 2*pi -1 1]),title('2sin(x)cos(x)')<br />
subplot(2,2,4)<br />
plot(x,b),axis([0 2*pi -20 20]),title('sin(x)/cos(x)')<br />
grid<br />
subplot(2,2,2)<br />
grid<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.42
4.6 - UTILIZAR VÁRIAS JANELAS COM FIGURAS<br />
h1=figure<br />
h1 =<br />
1<br />
plot(x,y),axis([0 2*pi -1 1]),title('sin(x)')<br />
h2=figure<br />
h2 =<br />
2<br />
plot(x,z),axis([0 2*pi -1 1]),title('cos(x)')<br />
h3=figure<br />
h3 =<br />
3<br />
plot(x,a),axis([0 2*pi -1 1]),title('2sin(x)cos(x)')<br />
h4=figure<br />
h4 =<br />
4<br />
plot(x,b),axis([0 2*pi -20 20]),title('sin(x)/cos(x)')<br />
figure(4)<br />
grid<br />
close<br />
close (2)<br />
help close<br />
clf<br />
GINPUT Graphical input from a mouse or cursor.<br />
[X,Y] = GINPUT(N) gets N points from the current axes and returns<br />
the X- and Y-coordinates in length N vectors X and Y. The cursor<br />
can be positioned using a mouse (or by using the Arrow Keys on some<br />
systems). Data points are entered by pressing a mouse button<br />
or any key on the keyboard. A carriage return terminates the<br />
input before N points are entered.<br />
[X,Y] = GINPUT gathers an unlimited number of points until the<br />
return key is pressed.<br />
[X,Y,BUTTON] = GINPUT(N) returns a third result, BUTTON, that<br />
contains a vector of integers specifying which mouse button was<br />
used (1,2,3 from left) or ASCII numbers if a key on the keyboard<br />
was used.<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.43
CAPÍTULO<br />
5<br />
EXERCÍCIOS<br />
PLANO DO CAPÍTULO<br />
5.1 – Exercícios (Parte A)<br />
5.2 – Exercícios (Parte B)<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.44
5.1 EXERCÍCIOS (PARTE A):<br />
Os exercícios a efectuar <strong>de</strong>verão ser apresentados sob a forma <strong>de</strong> listagem do Matlab.<br />
1. Preten<strong>de</strong>-se utilizar para cálculos futuros uma matriz A,<br />
⎡2<br />
A =<br />
⎢<br />
⎢<br />
3<br />
⎢⎣<br />
1<br />
5<br />
8<br />
3<br />
7 ⎤<br />
4<br />
⎥<br />
⎥<br />
9⎥⎦<br />
1.1. Faça ecoar esta matriz para o monitor.<br />
1.2. Se preten<strong>de</strong>sse não visualizar a matriz como faria ?<br />
2. Calcule a transposta da matriz A.<br />
3. Preten<strong>de</strong>-se utilizar, igualmente, uma matriz B<br />
⎡3<br />
B =<br />
⎢<br />
⎢<br />
1<br />
⎢⎣<br />
1<br />
2<br />
4<br />
7<br />
5⎤<br />
6<br />
⎥<br />
⎥<br />
8 ⎥⎦<br />
3.1. Calcule a matriz C em que C = A + B.<br />
3.2. Calcule a matriz D em que D = A – B.<br />
4. Introduza agora um vector E.<br />
E =<br />
[ 5 6 1]<br />
4.1. Calcule a Matriz F correspon<strong>de</strong>nte <strong>ao</strong> produto <strong>de</strong> B por E. Efectue todos os cálculos<br />
necessários, especificando-os.<br />
5. Efectue a divisão à direita <strong>de</strong> A por B.<br />
6. Eleve <strong>ao</strong> cubo o vector E.<br />
7. Apresente os seguintes vectores:<br />
7.1. Iniciando em 2 e terminando em 8 com incrementos <strong>de</strong> 2<br />
1 .<br />
7.2. Iniciando em 14 e terminando em 1 com incrementos fornecidos por uma variável β.<br />
Consi<strong>de</strong>re que β = −<br />
1<br />
.<br />
10<br />
8. Qual o resultado que espera obter após a introdução da seguinte expressão:<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.45
A(2,2) = A(2,3) + B(2,2)<br />
9. Determine uma matriz com 2 colunas em que uma <strong>de</strong>las é obtida <strong>de</strong>:<br />
X = (0.0 : 0.2 : 3.0)<br />
E a outra <strong>de</strong> :<br />
Y = exp (-X) .* sin(X)<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.46
5.2 EXERCÍCIOS (PARTE B):<br />
A resolução do exercícios <strong>de</strong>ve ser apresentada em disquete ou em listagem do MATLAB. Os<br />
ficheiro <strong>de</strong>vem ter os nomes especificados no enunciado <strong>de</strong> cada exercício.<br />
10. Fazer um m-file em que é pedido <strong>ao</strong> utilizador para introduzir um número, o programa<br />
<strong>de</strong>ve <strong>de</strong>terminar a que intervalo pertence o número e produzir o seguinte output :<br />
Nº INTRODUZIDO OUTPUT<br />
0 .. 5 Mau<br />
5 .. 7 Bom<br />
7 .. 10 Muito Bom<br />
(o m-file <strong>de</strong>ve ter o nome: if1.m)<br />
11. Preencha uma matriz 4x4 em que os elementos da diagonal principal <strong>de</strong>verão ser 1 e os<br />
restantes elementos são calculados através da expressão:<br />
⎛ 3 x i<br />
a i j<br />
j ⎟ ⎞<br />
( , ) =<br />
⎜<br />
⎝ ⎠<br />
2<br />
Utilize ciclos FOR. (O m-file <strong>de</strong>ve ter o nome: for1.m)<br />
12. Faça o exercício 2 utilizando o ciclo WHILE. (O m-file <strong>de</strong>ve ter o nome: wh1.m)<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.47
6- ÍNDICE<br />
1.1 COMMAND WINDOW................................................................................................................................ 2<br />
1.2 OPERAÇÕES ARITMÉTICAS ................................................................................................................... 2<br />
1.3 VARIÁVEIS EM MATLAB ........................................................................................................................ 4<br />
1.4 COMENTÁRIOS E PONTUAÇÃO............................................................................................................ 7<br />
1.5 NÚMEROS COMPLEXOS .......................................................................................................................... 8<br />
1.6 FUNÇÕES MATEMÁTICAS..................................................................................................................... 10<br />
1.7 FICHEIROS SCRIPT OU M-FILES......................................................................................................... 12<br />
1.8 COMO ENCONTRAR AJUDA NO MATLAB..................................................................................... 14<br />
2.1 DEFINIÇÃO DE VECTORES .................................................................................................................. 20<br />
2.2 ENDEREÇAMENTO DE ELEMENTOS DE UM VECTOR ............................................................. 22<br />
2.3 DEFINIÇÃO DE MATRIZES................................................................................................................... 22<br />
2.4 OPERAÇÕES COM MATRIZES............................................................................................................. 23<br />
2.5 OPERAÇÕES COM ARRAYS................................................................................................................... 26<br />
2.6 MANIPULAÇÃO DOS ELEMENTOS DE UMA MATRIZ............................................................... 28<br />
2.7 MATRIZES ESPECIAIS E FUNÇÕES COM MATRIZES................................................................ 29<br />
MATRIZES ESPECIAIS ................................................................................................................................... 29<br />
3.1 OPERADORES RELACIONAIS............................................................................................................... 32<br />
3.2 OPERADORES LÓGICOS ........................................................................................................................ 33<br />
3.3 ESTRUTURA DE ESCOLHA (IF-THEN-END).................................................................................... 34<br />
3.4 ESTRUTURAS DE REPETIÇÃO ............................................................................................................ 35<br />
4.1 O COMANDO PLOT................................................................................................................................... 40<br />
4.3 GRIDS AND LABELS ................................................................................................................................ 41<br />
4.4 COMANDO HOLD ...................................................................................................................................... 42<br />
4.5 – SUBPLOTS................................................................................................................................................. 42<br />
4.6 - UTILIZAR VÁRIAS JANELAS COM FIGURAS ................................................................................. 43<br />
5.1 EXERCÍCIOS:.............................................................................................................................................. 45<br />
5.2 EXERCÍCIOS:.............................................................................................................................................. 47<br />
6- ÍNDICE............................................................................................................................................................ 48<br />
ENIDH/DMM – Luis M. Mendonça<br />
Pág.48