Primeiro gostaria de me explicar com os leitores do MultiSign. Eu passei estes dias (quase 3 semanas) sem fazer nenhuma postagem porque estava envolvido com as atividades da Semana Santa, festas pascais e um artigo que espero finalizar hoje.
Voltando ao assunto. Vamos ver agora como fazer operações lógicas com vetores e matrizes.
Um exemplo:
Vamos supor que o vetor a seguir corresponde a altura, em metros, de um conjunto de pesoas.
v = [1.55 1.82 1.48 1.71 1.62 1.94 2.00]'
Precisamos então identificar as pessoas que têm mais de 1,80m.
Uma solução direta é analizar elemento por elemento:
v(1) > 1.80
v(2) > 1.80
v(3) > 1.80
v(4) > 1.80
v(5) > 1.80
v(6) > 1.80
v(7) > 1.80
Mas o Scilab tem uma forma mais prática de fazer isso:
v > 1.8 // esta operação não depende da dimensionalidade ou tamanho do vetor
Vamos fazer um script.
-->v = [1.55 1.82 1.48 1.71 1.62 1.94 2.00]'
v =
1.55
1.82
1.48
1.71
1.62
1.94
2.
-->v > 1.8
ans =
F
T
F
F
F
T
T
Mas, se o que desejamos é saber a posição dos elementos (pessoas) com mais de 1,80m:
-->pos = find(v > 1.8)
pos =
2. 6. 7.
Os elementos em v que são maiores que 1,80 são o segundo (1,82), sexto (1,94) e sétimo (2,00).
Podemos fazer a mesma coisa com matrizes.
Um exemplo muito útil é criar uma matriz binária em que a probabilidade de um elemento ser 0 (zero) é a mesma dele ser 1 (um).
Olhem o script e me dêem um feedback.
-->x = rand(3, 3)
x =
0.5667211 0.0568928 0.7279222
0.5711639 0.5595937 0.2677766
0.8160110 0.1249340 0.5465335
-->y = x > 0.5
y =
T F T
T T F
T F T
Para instigá-los, eu pergunto por que tem tantos T's a mais que F's?