










































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Apostila de MATLAB sobre tipos de dados fundamentais (matriz, vetores, operações básicas, números complexos, operadores lógicos, controle de fluxo, ciclo de repetição, gráficos, entre outras funções).
Tipologia: Notas de estudo
1 / 50
Esta página não é visível na pré-visualização
Não perca as partes importantes!











































Um computador é uma ferramenta essencial na resolução de problemas de Engenharia. Nestes apontamentos faz-se uma introdução ao Matlab, um pacote de software com a capacidade de computação numérica, análise de dados e gráficos.
O software Matlab foi originalmente desenvolvido para um uso específico e daí a origem do seu nome “Matrix Laboratory”. Actualmente as suas capacidades vão muito além das originalmente pensadas: é um sistema interactivo e permite todas as capacidades de uma linguagem de programação. Como propriedade fundamental o facto de que o Matlab faz uso de matrizes como estrutura de dados básica.
Depois de inicializar uma sessão em Matlab é visualizado o sinal de prompt ( >> ) que significa que o Matlab está pronto a receber um comando do utilizador.
O Matlab trabalha fundamentalmente com um tipo de dados: matrizes de números reais ou complexos. Casos especiais de matrizes são escalares (matriz 1x1) e vectores (matriz linha 1xn ou matriz coluna nx1).
1.1.1 Matrizes
Quando se pretende resolver um problema de engenharia é importante ter em conta a forma como vão ser visualizados os dados relativos ao problema em questão. Por vezes os dados são um único número, como por exemplo o raio de um círculo. Noutros casos o conjunto de dados pode ser a coordenada de um ponto no plano e tem-se um conjunto de dados constituído por um par de números (x,y). Noutros ainda podemos ter um conjunto de dados da forma (x,y,z). Contudo, quaisquer que sejam os dados, é sempre possível representá-los usando a notação matricial. Uma matriz não é senão um conjunto de números ordenados em linhas ou colunas.
1.1 Tipos de dados fundamentais
Assim um único ponto x pode ser considerado uma matriz com uma linha e uma coluna,
x - matriz (1x1)
Um ponto (x,y) como uma matriz de uma linha e duas colunas.
[ x, y] - matriz (1x2)
1.1.2 Inicialização de matrizes
Vamos agora ver como podem ser definidas e inicializadas matrizes no Matlab. Serão apresentados quatro métodos para o fazer: de uma forma explicita, como resultado de uma operação, como resultado da leitura de um ficheiro de dados e introduzida directamente pelo utilizador. Para os exemplos que se irão apresentar consideram-se as seguintes matrizes:
De uma forma explícita
A forma mais simples de definir uma matriz é usar uma lista de números entre parênteses rectos. Assim a matriz A pode ser definida como,
>> A = [ 1 2 3 ; 4 5 6 ]
O nome de uma matriz deverá começar por uma letra e conter até um máximo de 19 caracteres. Podem ser utilizadas virgulas ou espaços em branco para separar colunas e para separar linhas devem ser utilizados pontos e vírgulas ou mudanças de linha. Outra alternativa à definição da matriz A poderia ser:
>> A = [ 1,2,
4,5,6]
Como resultado de alguma operação
É também possível definir uma matriz como o resultado de alguma operação. Por exemplo se desejar conhecer o dobro da matriz A, então pode-se definir uma nova matriz C.
1.1 Tipos de dados fundamentais
Tal como no caso anterior é possível aceder à posteriormente a esta informação usando o comando load.
>> load dados1.dat
Contudo neste caso o nome da matriz que se definia seria dados1 e não B, portanto o nome do ficheiro em causa e não a variável que aí foi armazenada.
Introdução de Dados pelo Utilizador. Operador (;)
Os valores de uma matriz podem ser introduzidos através do teclado directamente pelo utilizador usando o comando input. Por exemplo a seguinte instrução:
>> numero = input(‘ Valor do numero ‘)
permite ao utilizador definir um dado valor para a variável numero. Se o comando não for finalizado por (;) o valor de numero será mostrado no écran, caso contrário o valor de numero é apenas armazenado na variável e não é mostrado.
>> numero = input(´ Valor do valor de numero ´) ;
Este uso do operador (;) no final de cada instrução é válido para qualquer comando Matlab.
1.1.3 Referência a elementos de matrizes
Uma vez que uma matriz é um conjunto de valores organizados segundo linhas e colunas deve ser possível aceder a um dos seus elementos ou mesmo a um subconjunto dos seus elementos.
Um elemento (escalar)
Para aceder a um elemento da matriz deve-se indicar qual a linha e a coluna. Assim,
>> a=A(2,3)
permite aceder ao elemento localizado na segunda linha e terceira coluna da matriz A, portanto a=6. De uma forma geral pode-se escrever:
1.1 Tipos de dados fundamentais
A(i,j) - elemento situado na linha i e coluna j
Subconjunto de elementos, operador (:)
Para aceder a um subconjunto de elementos é usado o operador dois pontos (:). Eis alguns exemplos que permitem compreender o seu funcionamento:
>> C= A(1:2, 2:3)
Significa que se pretendem os elementos da matriz A, desde a primeira à segunda linha e desde a segunda até à terceira coluna. O resultado seria portanto
De uma forma geral pode-se escrever:
A( imin : imax , jmin : jmax)
O resultado obtido são todos os elementos da matriz A definidos pelas linhas imin até imax e pelas colunas jmin até jmax. É possível também aceder a todos os elementos de uma linha/coluna mesmo que não se conheça a sua dimensão.
Por exemplo:
>> C = A(1:1,:)
define a matriz C como sendo
ou seja definidos pela primeira linha e todas as colunas. Uma expressão equivalente à anterior seria:
>> C = A(1,:)
No seguinte exemplo define-se a matriz C como sendo igual à A.
1.1 Tipos de dados fundamentais
1.1.5 Visualização gráfica
Suponhamos agora que se pretende fazer um gráfico com os valores da matriz em vez de, como na secção anterior, fazer apenas a sua visualização numérica. Na secção 1.5 este assunto será tratado com pormenor, por agora apresenta-se apenas uma breve introdução indicando o modo de visualizar um gráfico (x,y) a partir de dados armazenados em dois vectores.
Horas Temperatura 0 9 2 8 4 6 6 5 8 8 10 10 12 14 14 17 16 15 18 13 20 11 22 10 Tabela 1.1 : Valores da temperatura do ar.
Consideremos que foram observados os valores da temperatura do ar num determinado local durante as 24 horas do dia, de duas em duas horas. Os valores recolhidos mostram-se na tabela 1.1.
Assumindo que os valores foram guardados em dois vectores,
>> x=[ 0: 2: 22]
>> y=[ 9 8 6 5 8 10 14 17 15 13 11 10]
então o comando,
>> plot(x,y)
permite visualizar os dados da seguinte forma:
1.1 Tipos de dados fundamentais
(^50 5) 1 0 1 5 2 0
1 0
1 5
2 0
Figura 1.1 : Gráfico x-y.
As operações de adição, subtracção, multiplicação e adição são consideradas as operações fundamentais. Nesta secção além destas mostra-se como podem ser efectuadas outras operações tais como, raiz quadrada, logaritmos, etc., aplicadas a escalares, vectores e matrizes. Serão também definidas formas de tratar números complexos.
1.2.1 Valores escalares especiais
O Matlab dispõe de um número de valores pré-definidos:
1.2 Operações elementares
1.2.3 Operações com Escalares
As operações elementares possíveis de efectuar com escalares mostram-se na tabela seguinte
Operação Forma Algébrica Matlab Adição (^) a + b a + b Subtracção (^) a − b a − b Multiplicação a^ ∗^ b a^ ∗ b Divisão à direita b
a (^) a / b
Divisão à esquerda a
b (^) a \ b
Exponencial (^) a b a ^ b
Tabela 1.2 : Operações com escalares.
1.2.4 Operações elemento a elemento: vectores
Admitamos que dispomos de dois vectores:
>> A = [[[[ 2 5 6 (^) ]]]]
>> B = [[[[ 2 3 5 ]]]]
Deseja-se definir um terceiro vector que seja o resultado da multiplicação elemento a elemento deste dois vectores. Uma forma seria efectuar repetidamente:
>> C(1) = A(1)B(1)*
>> C(2) = A(2)B(2)*
>> C(3) = A(3)B(3)*
Evidentemente tal processo seria inviável para vectores de maiores dimensões. Utilizando o Matlab tal operação pode ser facilmente efectuada usando o seguinte comando:
1.2 Operações elementares
>> C = A.B*
O ponto final (.) antes do sinal de multiplicação (*) representa portanto uma operação elemento a elemento. Refira-se que se este fosse omitido estaria a fazer uma multiplicação normal entre duas matrizes. Uma vez explicado o que se entende por operação elemento a elemento mostra-se na tabela seguinte as operações possíveis em Matlab.
Operação Forma Algébrica Matlab Adição a^ +^ b a^ + b Subtracção a^ −^ b a^ − b Multiplicação a^ ∗^ b a^ .∗ b Divisão à direita b
a (^) a. / b
Divisão à esquerda a
b (^) a .\ b
Exponencial a b a .^ b
Tabela 1.3 : Operações com vectores.
Para melhor entender este tipo de operações mostram-se alguns exemplo considerando os vectores A e B acima definidos.
>> C = A.B*
O resultado é C = [ 4 15 30 ]
>> C = A./B
O resultado é C = [ 1 1.667 1.2 ]
>> C = A.\B
O resultado é C = [ 1 0.6 0.833 ]
>> C = A.^
O resultado é C = [ 4 25 36 ]
>> C = (3).^A
O resultado é C = [ 9 243 729 ]
Neste último caso note que se o comando fosse 3.^A seria gerada uma mensagem de erro!!
1.2 Operações elementares
"""" acos (x) Arco coseno ou inverso do coseno de x ∈ [-1,..1].
A função devolve um ângulo compreendido entre 0 e π
"""" atan (x) Arco tangente ou inversa da tangente de x ∈ [-1,..1].
A função devolve um ângulo compreendido entre 2
"""" atan2 (x) (^) Arco tangente ou inversa da tangente de x ∈ [-1,..1].
A função devolve um ângulo compreendido entre -π e π
1.2.7 Números complexos
Consideremos por exemplo a seguinte equação de segunda ordem:
f(x) = x^2 + 3 x + 3
Admitindo que se deseja calcular os zeros, usando a formula resolvente
x =− + − 1. 5 0. 87 1 2
x =− − −
De forma a que estas raízes tenham sentido surge a definição de números complexos e também de − 1. Um número complexo é um número definido por a +b i tal que a e b são números reais e i = − 1.
Operações Aritméticas com Números Complexos
Dados dois números complexos: c 1 (^) = a 1 + ib 1 e c 2 (^) = a 2 + ib 2 então,
Operação Resultado
2
1 c
c
22 22
21 2 1 22 22
1 2 1 2 a b
i ab ba a b
aa bb
c 1 (^) a 1^2 + b 12 ∗ c 1 a 1^ − ib 1
Tabela 1.4 : Operações com números complexos.
1.3 Definição de funções pelo utilizador: M files
Seria bastante limitado se apenas fosse possível executar as funções pré-definidas pelo Matlab. Quase sempre surge a necessidade de criar novas funções. Vai-se ver agora como é que isso é possível usando o Matlab.
*Ficheiros .m - M Files
Antes de explicar o conceito de função comecemos por descrever os ficheiros *.m utilizados pelo Matlab. Até agora tem-se falado em comandos isolados como sendo a única hipótese de “comunicar” com o Matlab. Supondo que se deseja somar três números x, y e z, usando os comandos do Matlab, ter-se-ia:
>> x=
>> y=
>> z=
>> c= x+y+z
Neste caso são necessários apenas quatro comandos e facilmente se digitam os quatro comandos. O problema põe-se se for necessário digitar por exemplo 100 comandos para resolver um certo problema … Será que é sempre necessário digitar todos os comandos? Certamente que não. O Matlab recorre ao uso de ficheiros *.m para resolver o problema.
1.3.1 Scripts
Um ficheiro *.m não é senão um vulgar ficheiro de texto onde são armazenados os comandos a serem executados pelo Matlab, um em cada linha e pela sequência desejada. Por exemplo, para somar os tais números x, y e z, poder-se-ia criar um vulgar ficheiro ASCII com um qualquer editor de texto que contivesse o seguinte texto.
x = 2 y = 3 z = 1 c = x+y+z
O ficheiro poderia ter qualquer nome apenas tendo como restrição a extensão que teria de ser .m (daí o nome de ficheiros *.m). Note-se que é importante a extensão!! Um possível nome para o ficheiro de texto poderia ser soma.m.
1.3 Definição de funções pelo utilizador: M files
>> r = soma( 1, 2 ,3)
e o resultado seria r = 6. Suponhamos que se deseja uma função que calcule a soma e o produto dos três elementos x, y e z. Da mesma forma cria-se um ficheiro de nome somaprod.m com o seguinte conteúdo:
function [ soma, produto] = soma_produto( x, y, z) soma = x + y + z ; produto = x * y * z ; end
Para usar esta função em Matlab executa-se,
>> [[[[ s,p ]]]] = somaprod( 2, 2, 3)
resultando s= 7 e p= 12.
Nota importante : O Matlab identifica a função pelo nome do ficheiro (neste caso somaprod ) e não pelo nome que lhe atribui dentro do ficheiro de texto (neste caso soma_produto).
Se por vezes uma série de instruções executada de uma forma sequencial permite resolver um determinado problema, noutros casos existe a necessidade de se executar apenas parte dos comandos em função de uma determinada condição. Pode por exemplo existir a necessidade de repetir o mesmo comando um grande número de vezes, etc. Qualquer destas situações é possível de implementar em Matlab e designam-se por operações de controlo de fluxo.
1.4.1 Operadores relacionais
Em Matlab existem seis operadores que permitem comparar duas matrizes de igual dimensão:
Operador Interpretação < Menor do que <= Menor ou igual do que
Maior do que
1.4 Controlo de fluxo
= Maior ou igual do que == Igual ~= Diferente
Tabela 1.5 : Operadores relacionais.
O resultado de uma destas operações é igual a um número inteiro 1 se a condição é verdadeira e 0 se é falsa. Por exemplo, considerando a e b escalares, o comando
>> a < b
será igual a 1 se a menor do que b ou zero se isso não acontecer.
No caso de matrizes os operadores são aplicados elemento a elemento. Consideremos os seguinte vectores:
>> a = [[[[ 2 4 6 ]]]]
>> b = [[[[ 3 5 1 ]]]]
>> a < b
>> ans = [[[[ 1 1 0 ]]]]
O resultado da operação a<b é portanto verdadeira para os dois primeiros elementos e falsa para o terceiro.
1.4.2 Operadores lógicos
É possível combinar duas expressões lógicas usando para isso operadores lógicos e ( and ), ou ( or ) ou não ( not ).
Operador Lógico Símbolo and & or | not ~
Tabela 1.6 : Operações lógicas.
1.4 Controlo de fluxo
end
Se a expressão lógica 1 é verdadeira são executadas as instruções 1 e 3. Se for falsa nada é executado. Se a expressão lógica 2 é verdadeira é executado o conjunto de instruções 2.
1.4.4 Condição If Else
Adicionado ao comando if o comando else permite optar por um conjunto de instruções se uma expressão lógica for verdadeira ou por outro conjunto de instruções se a expressão lógica for falsa.
if expressão lógica
instruções 1
else
instruções 2
end
1.4.5 Condição ElseIf
Quando é necessário implementar vários níveis de condições if-else é preferível utilizar a condição elseif
if expressão lógica 1
instruções 1
elseif expressão lógica 2
instruções 2
elseif expressão lógica 3
instruções 3
end
Se a expressão lógica 1 é verdadeira apenas o conjunto de instruções 1 é executado, se a expressão lógica 1 for falsa e a expressão lógica 2 é verdadeira apenas o conjunto de instruções 2 é executado e se a expressão lógica 1 e 2 forem falsas e a expressão lógica 3 for verdadeira
1.4 Controlo de fluxo
apenas o conjunto de instruções 3 é executado. Claro que também é possível obter o mesmo resultado apenas com instruções if , mas como se percebe, com um maior grau de complexidade.
1.4.6 Funções lógicas
O Matlab fornece um conjunto de funções lógicas úteis em condições if. Eis algumas delas:
" any ( x ) Para cada coluna da matriz x esta função devolve 1 se algum valor é não nulo e 0 em caso contrário " all ( x ) Para cada coluna da matriz x esta função devolve 1 se todos os valores forem não nulos e 0 em caso contrário " isnan ( x ) Devolve uma matriz com uns nos elementos de valor infinito e zero se não o forem " isempty ( x ) Devolve 1 se a matriz é uma matriz vazia, 0 em caso contrário
Seguem-se alguns exemplos. Seja a matriz A definida por:
>> any(A)
O resultado será [ 0 1 1 1 ]
>> all(A)
O resultado será [ 0 1 0 1 ]
>> isnan(A)
O resultado será