MATLAB 은 기본적으로 matrix 연산을 수행 합니다.

 

element-by-element 연산을 수행하고자 하는 경우에는 보통 점(.) 을 붙여서 다음과 같이 .* 와 같이 표현하곤 하죠.

 

또한 이런 element-by-element 연산을 하기 위해서는 변수의 차원이 맞아야 합니다. 즉 같은 크기여야 합니다.

 

다음과 같이 1행 ×3 열 의 x와 3행 × 1열의 y 를 3 × 3 행열을 만든 다음에 더하고 싶을 때는

 

 

다음과 같이 구성해야 할 것입니다.

 

일단 repmat 을 사용해서 x, y 를 3×3 행열로 만들어 주고~ 다음에 더해야 에러 없이 정상적으로 element-by-element 연산을 수행 할 것입니다.

 

 

그런데 오늘 소개할 bsxfun(binary singleton expansion function) 을 활용 하면 이렇게 차원을 고려해서 맞춰줘야 하는 불편함이 줄어 듭니다.

 

위에 문제는 bsxfun() 를 써서 다음과 같이 좀더 편리하게 처리 할 수 있습니다.

 

bsxfun (function handle, x, y)

 

 

bsxfun() 를 사용하면 x, y 변수를 크기에 element-by-element 연산을 할 수 있도록 각각 사이즈를 조정해서 더하기를 해 준다는 것을 확인 할 수 있습니다.

 

아래 주소에 그 매뉴얼이 있고~ MATLAB command 창에 doc bsxfun 를 해서 매뉴얼을 학습해 보시기 바랍니다.

 

http://kr.mathworks.com/help/matlab/ref/bsxfun.html?requestedDomain=www.mathworks.com

 

function handle 에 대해 궁금하신 분들은 아래 포스팅을 참조 하시길~

 

http://iamaman.tistory.com/122

http://iamaman.tistory.com/175


+ Recent posts