Singleton expansion no Octave

Categoria: Octave/Matlab
Publicado em 08 de Julho de 2014

A técnica de singleton expansion consiste em expandir o tamanho de um dos arrays antes de realizar uma operação envolvendo matrizes (multiplicação, adição, etc). Para que seja possível realizá-la é necessário que um dos operandos (uma das matrizes) tenha a quantidade de colunas ou linhas igual a 1.

Por exemplo:

1
2
3
4
5
6
7
8
a =
   1   2   3
   4   5   6
   7   8   9
 
b =
   1   1   1
 

Ao realizar o singleton expansion nas duas matrizes acima, a matriz b será modificada de modo que fique com a mesma quantidade de linhas que a matriz a. As linhas acrescentadas terão o mesmo valor da única linha existente em b.

1
2
3
4
5
6
7
8
9
a =
   1   2   3
   4   5   6
   7   8   9
 
b =
   1   1   1
   1   1   1
   1   1   1

Exemplo de uso no Octave:

1
bsxfun( @plus, a, b )

O comando acima irá realizar o singleton expansion nos operandos (matrizes) a e b e aplicará a operação de adição (plus) entre os elementos dos dois arrays. O resultados será o seguinte:

1
2
3
4
ans =
    2    3    4
    5    6    7
    8    9   10

Para visualizar uma lista de operações permitidas pelo comando bsxfun consultar a documentação do Octave: http://www.mathworks.com/help/matlab/ref/bsxfun.html

 

Copyright © Fernando Hidemi Uchiyama 2010 - Todos os direitos reservados