[KEA]matlab Mathmatics

전종원·2023년 2월 20일
0

1. Mathmatics(1)

1.1. 인덱싱

  • matlab 행렬의 인덱싱은 1부터 시작

1.2. scalar와 vector, multi-dim array

>> A = 5;
>> ndims(A) # 2
>> size(A) # 1 1
>> isscalar(A) # 1

>> A = [5.73 2-4i 9/7 25e3 .046 sqrt(32) 8j];
>> size(A) # 1 7
>> isvector(A) # 1

  • matlab에서는 단일 원소도 2차원 행렬에 할당한다.
  • 차원이 (1,1) 이상이면 vector로 인지한다.
  • tensor처렴 multi dimension array도 가능하다.

1.3. multi dimension array 예제

>> tmp = [30.3, 31.2; 26.0, 24.3; 28.0, 27.3];
>> tmp(:,:,2) = [31.2, 31.3; 27.3, 24.7; 29.3, 29.2];
>> tmp(:,:,3) = [33.2, 35.1; 29.1, 28.2; 34.2, 33.1];
>> avg_1F = mean(mean(tmp(:,:,1))) # 27.8500
>> avg_2F = mean(mean(tmp(:,:,2))) # 28.8333
>> avg_3F = mean(mean(tmp(:,:,3))) # 32.1500
>> avg_Win = mean(mean(tmp(1,:,:))) # 32.0500
>> avg_AC = mean(mean(tmp(:,1,:))) # 32.0500
  • multi dimension array에서 mean값을 구하고 싶을때는 dimension 갯수만큼 써줘야한다.
  • 2차원인데 한번만 쓰면 column의 mean값을 반환한다.

1.4. Cell array

  • { }로 표시
  • 서로다른 크기와 타입들이 들어갈 수 있는 array
  • cell array 안에 또다른 cell array도 할당 가능
  • 전체 원소에 접근 가능하고 ()를 통해 특정 범위의 원소에도 접근가능
>> A = {rand(2,2,2), 'Hello', 17.35} # [2x2x2 double] 'Hello' [17.3500]
>> B{1,1} = 1:10;
>> B{2,2} = A
# [1x10 double]       []
#            []       {1x3 cell}
>> B{1,1} # 1 2 3 4 5 6 7 8 9 10
>> A{1,1}(2,:,1) # 0.9157 0.9595

1.5. Structure array

  • 여러 타입의 데이터 속성들의 세트를 가지고 있는 구조체
>> Students.Name = 'Mary';
>> Students.Grades = [97 93];
>> Students(2).Name = 'Joe';
>> Students(2).Grades = [94 96];
>> NewStudents = struct('Name',{'Mary', 'Joe'}, 'Grades',{[97 93], [94 96]});
>> Students(1).Name
ans =
Mary
>> NewStudents(1).Name
ans =
Mary
>> Grades = [Students.Grades]
Grades = 97 93 94 96
>> Grades2 = {Students(:).Grades}
Grades2 = [1x2 double] [1x2 double]

1.6. Dictionaty array

  • key와 value가 존재하는 array
>> KeySet = {'Jan','Feb','Mar','Apr'};
>> RainFallValueSet = [327.2 368.2 197.6 178.4];
>> M = containers.Map(KeySet, RainFallValueSet)
M =
Map - 속성 있음:
Count: 4
KeyType: char
ValueType: double
>> Rain_Fall_Data = M('Jan')


>> Students = struct('Name',{'Mike', 'Jessie', 'Sue', 'Tom'},...
'Korean',{75, 68, 78, 99},...
'English',{78, 56, 99, 54},...
'Math',{82, 55, 80, 78});
>> Grade = [Students.Korean; Students.English; Students.Math];
>> SueAvg = mean(Grade(:,3))
SueAvg =
85.6667
>> EnglishAvg = mean(Grade(2,:))
EnglishAvg =
71.7500

2. Mathmatics(2)

2.1. array operations

  • 원소들끼리의 연산을 원하면 연산자 앞에 .을 붙임 이 경우 차원이 맞지 않아도 연산가능
  • 그냥 행렬연산을 원하면 .을 붙이지 않고 시행
>> A = [1 3; 2 4]
>> B = [3 0; 1 5]
>> A*B
ans = 
	6 15
    10 20
>> A .* B
ans = 
	3 0
    2 20

2.2. 방정식 풀기

  • 역행렬 곱해서 해를 구할 수 있음
>> A = [ -1 1 2; 3 -1 1; -1 3 4];
>> b = [2;6;4];
>> x = inv(A)*b
x =
1.0000
-1.0000
2.0000
>> x = A\b
x =
1.0000
-1.0000
2.0000

2.3. 연산 순서

• Operator Precedence
1. Parentheses ()
2. Transpose (.'), power (.^), complex conjugate transpose ('), matrix power (^)
3. Power with unary minus (.^-), unary plus (.^+), or logical negation (.^~) as well as matrix power with unary minus (^-), unary plus (^+), or logical negation (^~).
4. Unary plus (+), unary minus (-), logical negation (~)
5. Multiplication (.), right division (./), left division (.), matrix multiplication (), matrix right division (/), matrix left division ()
6. Addition (+), subtraction (-)
7. Colon operator (:)
8. Less than (<), less than or equal to (<=), greater than (>), greater than or equal to (>=), equal to (==), not equal to (~=)
9. Element-wise AND (&)
10. Element-wise OR (|)
11. Short-circuit AND (&&)
12. Short-circuit OR (||)

0개의 댓글