Diferenças entre edições de "Manipulação de vetores"
Linha 1: | Linha 1: | ||
Existem muitas formas de manipular vetores no Octave. | Existem muitas formas de manipular vetores no Octave. | ||
− | === | + | === Definição de um vetor === |
A forma mais simples de definir um vetor em Octave é listando os valores do mesmo entre '[' e ']'. Pode separar cada um dos elementos com vírgulas ou com espaços. | A forma mais simples de definir um vetor em Octave é listando os valores do mesmo entre '[' e ']'. Pode separar cada um dos elementos com vírgulas ou com espaços. | ||
Linha 16: | Linha 16: | ||
===== Notação ===== | ===== Notação ===== | ||
− | O vetor anterior poderá ser | + | O vetor anterior poderá ser apresentado numa notação ligeiramente diferente, em que todos os números são multiplicados por 10 (1.0e+01), da seguinte forma: |
<syntaxhighlight> | <syntaxhighlight> | ||
Linha 35: | Linha 35: | ||
82.400 82.700 82.500 | 82.400 82.700 82.500 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Definição de um vetor por compreensão === | ||
+ | |||
+ | Pode-se definir um vetor sem ter que enumerar todos os seus elementos. Uma forma muito simpática de o fazer é através da indicação do valor inicial, um incremento e o limite. O operador usa-se da seguinte forma: | ||
+ | |||
+ | ''valor inicial: incremento: limite'' | ||
+ | |||
+ | <syntaxhighlight> | ||
+ | >> 1:1/3:3 | ||
+ | ans = | ||
+ | 1.0000 1.3333 1.6667 2.0000 2.3333 2.6667 3.0000 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Desta forma é muito fácil, por exemplo, calcular os valores da função y = 2 * x - 3 para os valores de 1 a 10. | ||
+ | |||
+ | <syntaxhighlight> | ||
+ | >> x = 1:1:10 | ||
+ | x = | ||
+ | 1 2 3 4 5 6 7 8 9 10 | ||
+ | >> y = 2*x-3 | ||
+ | y = | ||
+ | -1 1 3 5 7 9 11 13 15 17 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Pode ser abreviado para ''valor inicial: limite'' assumindo-se que o incremento é 1. Pode-se fazer, por exemplo: | ||
+ | |||
+ | <syntaxhighlight> | ||
+ | >> 15:20 | ||
+ | ans = | ||
+ | |||
+ | 15 16 17 18 19 20 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Linha 84: | Linha 116: | ||
16 25 36 49 64 | 16 25 36 49 64 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Linha 188: | Linha 188: | ||
=== Grandes vetores === | === Grandes vetores === | ||
− | No Octave pode-se guardar uma ou mais variáveis num | + | No Octave pode-se guardar uma ou mais variáveis num documento para posterior utilização. No documento <code>heartrate.m</code>, disponível em http://octave.di.uminho.pt/images/files/ tem a definição de um vetor chamado <code>bpm</code>. |
− | Descarregue o | + | Descarregue o documento, e depois leia o vetor <code>bpm</code> do documento <code>heartrate.m</code>. |
+ | |||
<syntaxhighlight> | <syntaxhighlight> | ||
>> load heartrate.m bpm | >> load heartrate.m bpm | ||
Linha 202: | Linha 203: | ||
Neste vetor estão registados os batimentos cardíacos (batimentos por minuto) registados com intervalos de 5 segundos. O registo começou às 08:40:19 do dia 2012-10-03. | Neste vetor estão registados os batimentos cardíacos (batimentos por minuto) registados com intervalos de 5 segundos. O registo começou às 08:40:19 do dia 2012-10-03. | ||
− | i) Diga quantos valores | + | i) Diga quantos valores tem o vetor <code>bpm</code>, ou seja, qual o comprimento ou dimensão do vetor <code>bpm</code>. |
<syntaxhighlight> | <syntaxhighlight> | ||
Linha 237: | Linha 238: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | v) Mostre apenas os primeiros 5 elementos do vetor bpm | + | v) Mostre apenas os primeiros 5 elementos do vetor <code>bpm</code>. |
<syntaxhighlight> | <syntaxhighlight> | ||
bpm(1:5) | bpm(1:5) | ||
</syntaxhighlight> | </syntaxhighlight> |
Revisão das 23h13min de 8 de outubro de 2013
Existem muitas formas de manipular vetores no Octave.
Índice
Definição de um vetor
A forma mais simples de definir um vetor em Octave é listando os valores do mesmo entre '[' e ']'. Pode separar cada um dos elementos com vírgulas ou com espaços.
>> vel = [ 50 50 70 90 120 ] vel = 50 50 70 90 120 >> peso = [ 82.4, 82.7, 82.5] peso = 82.400 82.700 82.500
Notação
O vetor anterior poderá ser apresentado numa notação ligeiramente diferente, em que todos os números são multiplicados por 10 (1.0e+01), da seguinte forma:
>> peso = [82.4, 82.7, 82.5] peso = 1.0e+01 * 8.24000 8.27000 8.25000
Para usar a notação normal, usa-se a função fixed_point_format
.
>> fixed_point_format(0) >> peso peso = 82.400 82.700 82.500
Definição de um vetor por compreensão
Pode-se definir um vetor sem ter que enumerar todos os seus elementos. Uma forma muito simpática de o fazer é através da indicação do valor inicial, um incremento e o limite. O operador usa-se da seguinte forma:
valor inicial: incremento: limite
>> 1:1/3:3 ans = 1.0000 1.3333 1.6667 2.0000 2.3333 2.6667 3.0000
Desta forma é muito fácil, por exemplo, calcular os valores da função y = 2 * x - 3 para os valores de 1 a 10.
>> x = 1:1:10 x = 1 2 3 4 5 6 7 8 9 10 >> y = 2*x-3 y = -1 1 3 5 7 9 11 13 15 17
Pode ser abreviado para valor inicial: limite assumindo-se que o incremento é 1. Pode-se fazer, por exemplo:
>> 15:20 ans = 15 16 17 18 19 20
Feedback
Quando se define um vetor, o octave apresenta imediatamente o mesmo, como aconteceu nos exercícios anteriores. Caso não se pretenda ter esse feedback, termina-se a instrução com ;
. No exemplo seguinte define-se um vetor x com e sem ;
no fim da instrução.
>> x = 1:10 x = 1 2 3 4 5 6 7 8 9 10 >> x = 1:10;
Operações
Se aplicar um operador normal, como a multiplicação, a um argumento do tipo vetor, o mesmo é aplicado a todos os elementos do vetor.
>> val = [1 2 3 4 5] val = 1 2 3 4 5 >> val*2 ans = 2 4 6 8 10
Da mesma forma, pode aplicar uma função a todos os elementos de um vetor.
>> valores = [0 pi/2 pi] valores = 0.00000 1.57080 3.14159 >> sin(valores) ans = 0.00000 1.00000 0.00000
Operadores sobre os elementos dos vectores
>> x = [4 5 6 7 8] x = 4 5 6 7 8 >> x^2 error: for A^b, A must be square >> x.^2 ans = 16 25 36 49 64
Exercícios
- Crie um vetor com todos os múltiplos de 3, entre 1 e 100.
- Seja x = [1 2 3 4 5].
- Calcule os valores da função y = -3x^2 +4x -1, para os valores de x.
- Calcule o máximo valor de y (no domínio definido por x).
- Considere os seguintes dados. Tem 3 artigos diferentes, cada um com o seu preço unitário, e quer adquirir determinadas quantidades de cada um desses artigos.
- Seja preco = [ 2.45, 3.95, 8]
- Seja quantidade = [2 6 3]
- Calcule o preço a pagar por cada um dos artigos, atendendo à quantidade.
- Calcule valor total, isto é o valor apagar por todos os artigos multiplicados pelas respectivas quantidades.
Soluções dos exercícios | Resumo | Resposta |
---|---|---|
1 | Múltiplos de 3 | 3:3:100 |
2 | Dados do problema | x = [1 2 3 4 5] |
2.1 | Calcular os valores da função y | y = -3*x.^2 + 4*x -1 y = 0 -5 -16 -33 -56 |
2.2 | Máximo de y | max(y) ans = 0 |
3 | Dados do problema | preco = [ 2.45, 3.95, 8 ] quantidade = [2 6 3] |
3.1 | Valor a pagar por cada artigo (preço x quantidade) | preco .* quantidade ans = 4.9000 23.7000 24.0000 |
3.2 | Valor total a pagar | sum(preco .* quantidade) ans = 52.600 |
Valor total a pagar | preco * quantidade' ans = 52.600 | |
Valor total a pagar | dot(preco,quantidade) ans = 52.600 |
Grandes vetores
No Octave pode-se guardar uma ou mais variáveis num documento para posterior utilização. No documento heartrate.m
, disponível em http://octave.di.uminho.pt/images/files/ tem a definição de um vetor chamado bpm
.
Descarregue o documento, e depois leia o vetor bpm
do documento heartrate.m
.
>> load heartrate.m bpm >> load "C:/Users/jgr/Downloads/heartrate.m" >> who Variables in the current scope: ans bpm >> bpm
Neste vetor estão registados os batimentos cardíacos (batimentos por minuto) registados com intervalos de 5 segundos. O registo começou às 08:40:19 do dia 2012-10-03.
i) Diga quantos valores tem o vetor bpm
, ou seja, qual o comprimento ou dimensão do vetor bpm
.
length(bpm)
ii) Diga qual o valor mínimo do vetor.
min(bpm)
ii) Diga qual o valor máximo do vetor.
max(bpm)
iii) Diga quantas vezes se registaram batimentos acima dos 160.
fortes = bpm(bpm > 160); length(fortes)
iv) Diga qual a média dos batimentos cardíacos.
mean(bpm)
ou
sum(bpm)/length(bpm)
v) Mostre apenas os primeiros 5 elementos do vetor bpm
.
bpm(1:5)