Diferenças entre edições de "Manipulação de vetores"
(→Constantes) |
|||
Linha 6: | Linha 6: | ||
<syntaxhighlight> | <syntaxhighlight> | ||
− | + | >> vel = [ 50 50 70 90 120 ] | |
vel = | vel = | ||
50 50 70 90 120 | 50 50 70 90 120 | ||
− | + | >> peso = [ 82.4, 82.7, 82.5] | |
peso = | peso = | ||
82.400 82.700 82.500 | 82.400 82.700 82.500 | ||
Linha 35: | Linha 35: | ||
82.400 82.700 82.500 | 82.400 82.700 82.500 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === 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 <code>;</code>. No exemplo seguinte define-se um vetor x com e sem <code>;</code> no fim da instrução. | ||
+ | |||
+ | <syntaxhighlight> | ||
+ | >> x = 1:10 | ||
+ | x = | ||
+ | 1 2 3 4 5 6 7 8 9 10 | ||
+ | >> x = 1:10; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Linha 42: | Linha 53: | ||
<syntaxhighlight> | <syntaxhighlight> | ||
− | + | >> val = [1 2 3 4 5] | |
val = | val = | ||
1 2 3 4 5 | 1 2 3 4 5 | ||
− | + | >> val*2 | |
ans = | ans = | ||
2 4 6 8 10 | 2 4 6 8 10 | ||
Linha 53: | Linha 64: | ||
<syntaxhighlight> | <syntaxhighlight> | ||
− | + | >> valores = [0 pi/2 pi] | |
valores = | valores = | ||
0.00000 1.57080 3.14159 | 0.00000 1.57080 3.14159 | ||
− | + | >> sin(valores) | |
ans = | ans = | ||
0.00000 1.00000 0.00000 | 0.00000 1.00000 0.00000 | ||
Linha 64: | Linha 75: | ||
<syntaxhighlight> | <syntaxhighlight> | ||
− | + | >> x = [4 5 6 7 8] | |
x = | x = | ||
4 5 6 7 8 | 4 5 6 7 8 | ||
− | + | >> x^2 | |
error: for A^b, A must be square | error: for A^b, A must be square | ||
− | + | >> x.^2 | |
ans = | ans = | ||
Linha 82: | Linha 93: | ||
<syntaxhighlight> | <syntaxhighlight> | ||
− | + | >> 1:1/3:3 | |
ans = | ans = | ||
1.0000 1.3333 1.6667 2.0000 2.3333 2.6667 3.0000 | 1.0000 1.3333 1.6667 2.0000 2.3333 2.6667 3.0000 | ||
Linha 90: | Linha 101: | ||
<syntaxhighlight> | <syntaxhighlight> | ||
− | + | >> x = 1:1:10 | |
x = | x = | ||
1 2 3 4 5 6 7 8 9 10 | 1 2 3 4 5 6 7 8 9 10 | ||
− | + | >> y = 2*x-3 | |
y = | y = | ||
-1 1 3 5 7 9 11 13 15 17 | -1 1 3 5 7 9 11 13 15 17 | ||
Linha 101: | Linha 112: | ||
<syntaxhighlight> | <syntaxhighlight> | ||
− | + | >> 15:20 | |
ans = | ans = | ||
Linha 180: | Linha 191: | ||
Descarregue o arquivo, e depois leia o vetor bpm do arquivo heartrate.m, com o comando: | Descarregue o arquivo, e depois leia o vetor bpm do arquivo heartrate.m, com o comando: | ||
<syntaxhighlight> | <syntaxhighlight> | ||
− | + | >> load heartrate.m bpm | |
− | + | >> load "C:/Users/jgr/Downloads/heartrate.m" | |
− | + | >> who | |
Variables in the current scope: | Variables in the current scope: | ||
ans bpm | ans bpm | ||
− | + | >> bpm | |
</syntaxhighlight> | </syntaxhighlight> | ||
Revisão das 10h49min de 2 de outubro de 2013
Existem muitas formas de manipular vetores no Octave.
Índice
Constantes
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 apresentação 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
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
Descriçã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
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 arquivo para posterior utilização. No arquivo heartrate.m, disponível em http://octave.di.uminho.pt/images/files/ tem a definição de um vetor chamado bpm. Descarregue o arquivo, e depois leia o vetor bpm do arquivo heartrate.m, com o comando:
>> 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 (comprimento) tem o 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)