반응형
MATLAB 수식 작성 중 초보자들이 많이 틀리는 부분이 element 간의 계산에 대한 부분인 것 같다.
위와 같은 변수가 있고, x와 y의 element 간의 곱을 하기 위하여
z=x*y 라는 명령어를 넣고 결과가 나오기를 기대하는 것은 MATLAB 의 operator 에 대하여 정확한 이해가 되지 않은 사람들이 하는 실수이다.
MATLAB 은 기본적으로 매트릭스 연산을 기준으로 한다. 위에 설정한 변수 x, y 는 둘 다 1행 10열의 벡터이므로 x*y의 매트릭스 곱은 성립될 수 없다. element 간의 곱을 하려면 연산자 앞에 . 을 붙여야 한다.
z=x.*y 라는 명령어를 command 창에 넣어보면 정상적인 결과 값을 볼 수가 있을 것이다.
위의 예에서와 같은 비교적 간단한 경우는 문제 될게 없다.
하지만 비교적 복잡한 아래와 같은 예에서는 일일이 연산자 앞에 . 을 붙이는 것이 불편하게 느껴질 때가 있다.
이러한 경우 vectorize()라는 함수를 이용하면 쉽게 해결 된다.
q=vectorize('x^2*y^2+3*x^5*y')
위의 q 라는 변수는 char 형 변수이다. 따라서 값을 얻기 위해서는 이에 대한 evaluation 이 필요하며 이를 행해주는 함수가 바로 eval() 이다.
z=eval(q)
z = 4 208 2268 12544 47500 141264 355348 790528 1600884 3010000
위와 같이 정상적인 결과를 얻을 수 있다.
반응형
'programming language > MATLAB' 카테고리의 다른 글
MATLAB filter, filtic 함수를 이용한 이산 시스템 응답 (609) | 2010.01.13 |
---|---|
MATLAB Upsample 과 FFT (4) | 2010.01.10 |
MATLAB 음성 파일 읽기, 재생 (0) | 2010.01.08 |
변수의 크기를 알아보자 (0) | 2010.01.08 |
MATLAB PDF (Probability Density Function) (5) | 2010.01.03 |
MATLAB Zero padding 에 따른 FFT 결과 (0) | 2010.01.03 |
MATLAB notebook (0) | 2010.01.01 |
MATLAB Iteration (1) | 2009.12.31 |
댓글