행벡터 열벡터 너무 오랜만이당 다신 안볼줄 알았는데... 아쉽...

 

 

tt02.m
0.00MB

 

1. 튜토리얼 02 - 행렬과 배열

 

(1) 행렬과 배열 생성

>> 입력

% tutorial_02.m

%-------------------------------------------------------
% 행렬과 배열 생성

% 행렬 생성
a = [1 2 3 4];              % 1행 4열 << 행벡터
b = [1 2 3 4; 5 6 7 8];     % 2행 4열

% 함수를 이용한 행렬 생성
c = zeros(5,1);             % 5행 1열, 영행렬 << 열벡터
d = ones(3,3);              % 3행 3열, 1로 구성된 행렬
e = rand(2,3);              % 2행 3열, 숫자 랜덤 발생
f = randi(10,2,3);          % 2행 3열, 정수 랜덤 발생
                            % randi(최대정수,행,열)

% 그냥 출력은 disp()사용!!
% 행렬 출력
disp("행렬 'A'를 출력합니다."),disp(a);
disp("행렬 'B'를 출력합니다."),disp(b);
disp("행렬 'C'를 출력합니다."),disp(c);
disp("행렬 'D'를 출력합니다."),disp(d);
disp("행렬 'E'를 출력합니다."),disp(e);
disp("행렬 'F'를 출력합니다."),disp(f);

%-------------------------------------------------------

 

>> 출력

>> tt02
행렬 'A'를 출력합니다.
     1     2     3     4

행렬 'B'를 출력합니다.
     1     2     3     4
     5     6     7     8

행렬 'C'를 출력합니다.
     0
     0
     0
     0
     0

행렬 'D'를 출력합니다.
     1     1     1
     1     1     1
     1     1     1

행렬 'E'를 출력합니다.
    0.3371    0.7943    0.5285
    0.1622    0.3112    0.1656

행렬 'F'를 출력합니다.
     7     7     8
     3     7     5

 

(2) 행렬의 연산

>>입력

% 행렬의 연산

% 그냥 단순히 연산만 해버리면 컴퓨터에서 처리할 수 있는 범위를 벗어남
% 관련 에러
% Index exceeds the number of array elements. Index must not exceed 1036.

format long;

f_ad = f + 10;      % 행렬의 모든 값 + 10
f_sn = sin(f);      % 행렬의 모든 값을 sin 처리
f_tp = f';          % 전치행렬
f_inv = pinv(f);    % 의사역행렬 << 정방이 아니니까 의사역행렬 사용

% 행렬의 복소수 표현
% 실수부 + 허수부i/허수부j
g = [3+4i, 4+3j; -i, 10j];

% 행렬 출력
disp("행렬 f에 10을 추가합니다."),disp(f_ad);
disp("행렬 f를 sin 처리합니다."),disp(f_sn);
disp("행렬 f의 전치행렬"),disp(f_tp);
disp("행렬 f의 의사역행렬"),disp(f_inv);
disp("행렬의 복소수 표현"),disp(g);

disp("행렬 f는 정방행렬이 아니라서 역행렬처리 불가 !! ㅋㅋㅋㅋ ");

 

>> 출력

행렬 f에 10을 추가합니다.
    20    12    15
    15    13    16

행렬 f를 sin 처리합니다.
  -0.544021110889370   0.909297426825682  -0.958924274663138
  -0.958924274663138   0.141120008059867  -0.279415498198926

행렬 f의 전치행렬
    10     5
     2     3
     5     6

행렬 f의 의사역행렬
   0.165238678090575  -0.131578947368421
  -0.072215422276622   0.131578947368421
  -0.101591187270502   0.210526315789474

행렬의 복소수 표현
  1번 열

  3.000000000000000 + 4.000000000000000i
  0.000000000000000 - 1.000000000000000i

  2번 열

  4.000000000000000 + 3.000000000000000i
  0.000000000000000 +10.000000000000000i

행렬 f는 정방행렬이 아니라서 역행렬처리 불가 !! ㅋㅋㅋㅋ

 

 

의사역행렬 참조 : https://bskyvision.com/256

 

[선형대수학] 의사역행렬(Pseudo inverse)

기본적으로 역행렬은 행렬이 정방행렬일 때만 구할 수 있다. 따라서 행렬이 직사각형 행렬이면 역행렬을 구할 수 없다. 이때는 대신 의사역행렬이라는 것을 구한다. ▶ 의사역행렬(pseudo inverse)

bskyvision.com

 

'프로그래밍 > MATLAB' 카테고리의 다른 글

MATLAB : Array  (0) 2022.04.08
MATLAB : Introduction & Basics  (2) 2022.04.08
MATLAB : 설치 및 튜토리얼 01-데스크탑 기본 사항  (0) 2022.02.19

+ Recent posts