반응형
Recent Posts
Recent Comments
Link
관리 메뉴

공머씨의 블로그

내가 공부한 옥타브7- 옥타브의 내장함수 익히기(18~34) 본문

내가 공부한 옥타브(매틀랩)/내가 공부한 옥타브

내가 공부한 옥타브7- 옥타브의 내장함수 익히기(18~34)

공머씨 2020. 3. 11. 23:01
반응형

 

18. 요소별 연산

 

.*는 원소 단위의 곱셈을 나타낸다.

./는 원소 단위의 나눗셈

.^ 원소 단위의 제곱을 나타낸다. (.^3 은 세제곱)

 

아래 코드를 보면 원소 각각이 제곱된 것을 알 수가 있다.

 

 

 

 

 

 

아래 코드는 행렬a와 행렬 a를 곱한 것 즉 행렬 a자체를 제곱한 것이다.

 

아래와 같은 계산과정을 거쳐서 계산합니다.

 

 

 

 

19.  indexing

indexing은 index(색인)에 ing 가 붙어서 색인을 다는 것이라는 뜻입니다.

색인: 어떤 것을 뒤져서 찾아내거나 필요한 정보를 밝힘

이라는 사전적 의미가 있습니다.

앞서

내공옥4 의 8번에서 원소 찾는 방법을 알아보았습니다.

이를 이용해서 색인을 찾을 수가 있습니다.

 

일단 간단하게 열벡터에서만 생각을 해봅니다.

 

a(k)는 행벡터 또는 열 벡터 a의 k번째 요소(원소)입니다.라고 나와 있습니다.

 

a 가 열벡터인데 a(2)을 입력하면 두 번째 행이 출력

a가 행벡터인데 a(2)를 입력하면 두 번째 열이 출력됩니다.

 

 

 

 

 

b는 행 벡터도 열 벡터도 아닌 2차원 이상의 일반적인 행렬입니다.

 

행렬 b의 첫 번째행 세 번째열의 원소를 찾고 싶다면 저렇게 입력을 하면 됩니다.

 

 

 

 

 

 

20. slice

slice에 대해서 알아보겠습니다.

 

 

a행렬의 k번째 원소부터 m번째 원소까지 출력하고 싶다면

v [k:m]

을 입력해주면 됩니다.

slice는 행렬이 열 벡터이거나 행 벡터일 때만 가능합니다.

 

 

 

원하는 행 또는 열만 출력하려면 다음과 같은 문법을 사용합니다.

 

행렬 A에서 k번째 행만 출력

A(k,:)는 행렬 A의 k 번째 행입니다.

 

행렬 A에서 l번째 열만 출력

A(:,l)는 행렬 A의 l 번째 열입니다

 

 

Q;

1 2 3

4 5 6

7 8 9

위와 같은 행렬 A를 입력하고 3번째 열만 출력하는 코드를 작성

그 결과를 적어라..

 

?

실제 시험에서 위와 같이 손 코딩 문제가 나옵니다.

손으로 직접 써보고

코딩해보길 바랍니다..

 

유한 엔터

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

위와 같은 결과가 나오게 됩니다.

 

 

21. 행렬에 있는 총원소의 숫자 구하기

만약 3X3행렬이라면 원소의 숫자가 9개인 것을 바로 알 수 있다,

하지만 행의 수와 열의 수가 매우 크다면 직접 계산하기 어려울 수 도 있을 것이다.

이럴 때를 위해서 Octave에는

length()라는 함수가 있다. 괄호 안에 행렬 이름을 입력해주면 그 행렬이 갖고 있는 총원소의 수를 구할 수가 있다.

 

 

.

 

 

 

22. 원하는 행, 열에 대입하기

앞서 내옥공4에서 행렬에 열추가 행 추가를 한 적이 있습니다.

다음행 다음 열에만 추가 가능한 문법만을 다뤘는데 이번에는 원하는 행에 또는 원하는 열에 추가하는 기능을 다뤄보고자 합니다..

 

 

 

 

 

(행렬 v는 열이 한 개인 열 벡터)

v행렬의 2행을(8)

a행렬의 2행 3열(6)에 대입한 것입니다.

 

 

 

 

 

 

 

 

원래 행렬 a의 형태입니다.

 

 

 

아래에서도 사용할 것이니 clear all로 지우지 말아 주세요

 

 

 

 

23. 어떤 행렬의 행에 행 벡터를 통째로 대입하기

문법

a(k,:) = r는 a의 k 번째 행에 행 벡터 r를 대입합니다.

Q;

벡터 a의 2행에 원소가 1로 구성된 행 벡터를 대입하시오

 

 

 

 

 

일단 원소가 1로 구성된 행 벡터를 생성합니다.

 

2행 모든 열을 1 1 1로 치환할 것이므로

a=(2,:)=r의 문법을 사용합니다.

 

 

 

행렬 a를

아래에서도 사용할 것이니 clear all로 지우지 말아 주세요

 

 

 

 

 

 

 

24. 어떤 행렬의 열에 열 벡터를 통째로 대입하기

문법

a (:,j) = c는 열 벡터 c를 a의 j 번째 열에 대입합니다.

 

Q: 행렬 a의 2번째 열의 원소에 모두 7을 대입합니다.

 

 

 

 

 

 

 

열이 한 개이고 원소가 모두 7인 열 벡터 c를 입력합니다.

 

 

 

바로 위 23번에서 사용한 행렬 a에서 두 번 개원 소였던 [2;1]이 모두 7로 치환되었음을 알 수가 있습니다.

 

아래에서도 사용할 것이니 clear all로 지우지 말아 주세요

 

 

 

25. 어떤 행렬의 행을 삭제하기

문법

a (k,:) = [] a의 k 번째 행을 삭제합니다.

 

행렬 a의 첫 번째 행을 모두 삭제합니다.

 

 

 

간단하게 문법을 그대로 사용하면 됩니다.

 

 

 

26. 어떤 행렬의 열을 삭제하기

문법

a(:,j) = []는 a의 j 번째 열을 삭제합니다.

 

7이라는 숫자가 거슬리므로 2열을 삭제해봅시다.

 

 

 

 

 

 

 

 

 

 

 

27. 부분적으로 대입하기

(행렬 B를 A의 1행의 1열부터: 2열까지 넣어라)

문법

A(1, 1:2)=B

 

추가로 ‘ : ’는 ~에서~까지 라고 생각하면 쉬울 것 같습니다

 

Q

행렬 X의 구성은 다음과 같습니다.

X=

1 2 3 4 5 6

7 8 9 10 11 12

여기서 위의 문법을 사용해서 1행의 1 2 3을 99 100 101로 바꿔 보시오

 

 

 

 

 

 

 

 

 

힌트

행렬 T의 구성은 다음과 같습니다.

행렬 X의 1행에서 1열~3열까지 넣으려면

T는 행이 하나인 행 벡터 이면서 열이 3개인 행렬임을 알 수 있습니다.

T=

99 100 101

 

 

 

 

 

 

 

 

유한 엔터

 

 

원래 행렬 X와 T의 형태는 다음과 같습니다.

 

 

 

 

정답은 다음과 같습니다!

 

 

 

 

 

 

 

 

 

28번 숫자가 빠졌네요...

 

 

 

29. diag() 함수

 

괄호 안의 행렬이 대각 원소가 있는 2x2차원 이상의 행렬일 때

diag(A)는 행렬 A의 대각선 성분 ajj를 포함하는 열 벡터를 만듭니다.

 

 

 

 

 

30. diag() 함수

괄호 안의 행렬이 대각 원소가 없는 행이 하나인 행 벡터 또는 (벡터 v)

열이 하나인 열 벡터 인경우 (벡터 x)

diag(v)는 벡터 v의 요소를 대각선으로 갖는 행렬을 생성합니다

 

 

 

 

 

 

 

31. diag(v, k)는 벡터 v의 k 번째 대각선 상의 원소들을 갖는 행렬을 생성한다.

 

 

 

행렬 v의 형태는 이렇습니다.

v=

1 2 3

4 5 6

7 8 9

diag(v,2)

이므로 행렬 v의 2번째 대각선 상의 원소는 2이고 그런 원소를 갖는 행렬을 생성합니다.

 

 

 

 

 

32. reshape(A, m, n) 은 A를 m x n -matrix로 변환합니다.

 

 

33. magic(A) 함수는 임의의 수로 구성된 AxA행렬을 만드는 함수이다.

 

 

 

 

 

.

 

 

 

magic함수의 괄호 안에 문자를 넣어서는 안 됩니다.

 

그리고 

rand() 함수와의 다른 점은 rand 함수는 괄호 안에 행과 열을 설정할 수가 있는데

magic() 함수의 경우에 괄호안에 하나의 숫자만 넣을 수 있고 두 가지 숫자를 넣으면 문법 오류가 발생됩니다. 정방 행렬만을 출력하게 됩니다.

 

하지만 rand() 함수는 정방 행렬 도 출력할 수가 있습니다.

 

또 rand()함수와 차이점이 하나 있는데 저번 시간에 설명을 잘 읽어보았다면 바로 알 수 있을 것입니다.

 

 

 

 

 

34. F(end)는 행렬의 끝부분을 출력하는 함수이다.

행렬의 끝부분이라는 것은 마지막행의 마지막 열 원소를 뜻합니다.

magic() 함수를 이용해

5*5 행렬인 행렬 a를 만들고

그때의 행렬 a의 끝부분을 출력해봅니다.

 

 

 

 

또한 프로그래밍은 읽는 방식이 오른쪽에서 왼쪽이므로

magic(3)=a

의 의미는 행렬 a를 magic(5)에 대입하라는 뜻입니다.

하지만 행렬 a는 선언되지 않은 상태이고 a의 형태가 정해져 있다고 해도 magic(5)인 함수에 넣는다는 것은 말이 안 됩니다.

반면

a=magic(3)의 경우에는 magic(3)을 생성해서 a에 대입하라는 뜻입니다.

 

 

 

 

 

 

 

Q:

함수 a의

2행부터 마지막행까지

모든 열

출력해라

힌트 방금 배운 matrix name(end) 함수를 활용해라

행의 수 또는 열의 수를 세기 힘들 때 또는 숫자가 너무 길어서 입력하기 힘들 때는

matrix name(end) 함수를 사용하면 편리할 것 같습니다.

 

 

 

 

다음 시간에는 옥타브로 연립방정식을 계산하는 법을 공부할 것입니다.

연립방정식을 행렬로 나타내고 역행렬을 이용해 미지수를 구하는 것입니다.

역행렬 개념이 가물가물하신 분들은 내옥공2의 7번 역행렬 부분을 다시 공부하시기 바랍니다.

 

공감 버튼과 구독은 큰 힘이 됩니다.

반응형
Comments