[GNU Octave - 무료 매트랩] 벡터(행렬) 다루기 팁 (1)
콜론(:)을 이용한 증분 벡터 생성 예시
>> [-10:-1:-15]
ans =
-10 -11 -12 -13 -14 -15
>> [0.5:0.1:1.0]
ans =
0.5000 0.6000 0.7000 0.8000 0.9000 1.0000
첫번째는 -10에서 -15까지 -1 단위로 생성, 두번째는 0.5에서 1.0까지 0.1 단위로 행벡터를 생성합니다.
또는 아래와 같이, 증분을 여러번 사용하여 벡터를 생성할 수도 있습니다.
>> [0:1:3, -10:2:-6]
ans =
0 1 2 3 -10 -8 -6
콜론을 이용하면 아래 그림과 같이 벡터의 부분만 추출할 수 있습니다.
>> v1 = [0:1:3, -10:2:-6]
v1 =
0 1 2 3 -10 -8 -6
>> v1(3:6)
ans =
2 3 -10 -8
콜론을 이용한 증분 표현은 벡터의 부분만 추출할 때도 사용될 수 있습니다. 아래는 벡터 v1의 1, 3, 5열의 내용을 추출하는 예시입니다.
>> v1
v1 =
0 1 2 3 -10 -8 -6
>> v1(1:2:5)
ans =
0 2 -10
위 예시에서 증분표현 부분에 벡터가 들어가도 같은 결과를 낳습니다.
>> v1
v1 =
0 1 2 3 -10 -8 -6
>> a = [1, 3, 5]
a =
1 3 5
>> v1(a)
ans =
0 2 -10
전치행렬(Transposition of Vectors) 다루기
전치행렬은 작은 따옴표(') 기호로 생성할 수 있습니다.
>> r = [10 9 8]
r =
10 9 8
>> r'
ans =
10
9
8
>> s = [1; 3; 5]
s =
1
3
5
>> s'
ans =
1 3 5
벡터 곱(product)
>> u = [10, 5, 0];
>> v = [2; 4; -6];
>> u*v
ans = 40
아마다르 곱(Hadamard product) : .* 연산자
>> u
u =
10 5 0
>> w
w =
1 2 3
>> u.*w
ans =
10 10 0
벡터 요소별 나누기 연산 : ./ 연산자
행렬에 나누기 연산은 없지만 GNU Octave는 두 행렬의 동일한 위치의 항목끼리 나누기를 지원합니다.
>> a=1:2:10, b=2:2:10
a =
1 3 5 7 9
b =
2 4 6 8 10
>> a./b
ans =
0.5000 0.7500 0.8333 0.8750 0.9000
응용으로 벡터의 각 항목에 아래와 같은 식을 적용하고 싶다고 가정해 봅시다.
\(y(x)=\frac{sin(x)}{x}\)
>> x=0.1:0.2:1
x =
0.1000 0.3000 0.5000 0.7000 0.9000
>> y=sin(x)./x
y =
0.9983 0.9851 0.9589 0.9203 0.8704
벡터 요소별 거듭제곱 : .^ 연산자
벡터의 항목별로 거듭제곱 연산을 적용할 수 있습니다.
>> u.^2
ans =
100 25 0
>> v.^(-3)
ans =
1.2500e-01
1.5625e-02
-4.6296e-03
끝.
예제에 사용된 프로그램은 아래 링크에서 다운로드할 수 있습니다.
댓글
댓글 쓰기