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
'programming language > MATLAB' 카테고리의 다른 글
MATLAB 현재 폴더 안의 모든 Simulink MDL 파일 SLX 로 변경하기 (0) | 2016.10.26 |
---|---|
MATLAB Simulink 블록의 존재 유무를 확인 하는 방법 (0) | 2016.10.20 |
Simulink scope 한번에 다 닫는 명령어 (0) | 2016.08.11 |
MATLAB finish.m 파일 설정 방법 (0) | 2016.08.08 |
MATLAB Exponential random variable generation (14) | 2016.01.13 |
MATLAB을 사용한 파일 내용 검색하기 grep() (0) | 2015.10.26 |
MATLAB Dependency 파일 모두 압축하기~ (0) | 2015.10.20 |
MATLAB Symbolic Math Toolbox C code generation (0) | 2015.10.16 |
댓글