산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> MATLAB

MATLAB: 다차원 배열과 특수 배열 마스터하기

MATLAB의 특수 배열

MATLAB의 모든 변수는 데이터 유형에 관계없이 다차원 배열입니다. 벡터는 1차원 배열이고, 행렬은 2차원 배열입니다. 앞선 장에서 벡터와 행렬을 다루었으므로, 이번 장에서는 다차원 배열을 다루기 전에 몇 가지 특수 배열 유형을 먼저 살펴보겠습니다.

특수 배열 생성 함수

이 섹션에서는 특수 배열을 생성하는 함수들을 소개합니다. 이들 함수는 인수 하나만 주면 정사각형 배열을, 두 개를 주면 직사각형 배열을 만듭니다.

zeros() 함수

모든 요소가 0인 배열을 생성합니다.

zeros(5)

실행 결과:

ans =
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0

ones() 함수

모든 요소가 1인 배열을 생성합니다.

ones(4,3)

실행 결과:

ans =
     1     1     1
     1     1     1
     1     1     1
     1     1     1

eye() 함수

단위 행렬(identity matrix)을 생성합니다.

eye(4)

실행 결과:

ans =
     1     0     0     0
     0     1     0     0
     0     0     1     0
     0     0     0     1

rand() 함수

(0, 1) 구간에서 균일 분포를 따르는 난수로 구성된 배열을 생성합니다.

rand(3, 5)

실행 결과 (예시):

ans =
    0.8147    0.9134    0.2785    0.9649    0.9572
    0.9058    0.6324    0.5469    0.1576    0.4854
    0.1270    0.0975    0.9575    0.9706    0.8003

마방진(Magic Square)

마방진은 행, 열, 대각선 방향으로 요소를 더했을 때 모두 같은 합이 나오는 정사각 행렬입니다.

magic() 함수는 마방진 배열을 생성합니다. 크기를 나타내는 스칼라 인수 하나(3 이상)를 받습니다.

magic(4)

실행 결과:

ans =
    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

다차원 배열

두 개 이상의 차원을 가진 배열을 MATLAB에서는 다차원 배열이라 합니다. 이는 일반 2차원 행렬의 확장 개념입니다.

일반적으로 2차원 배열을 먼저 만든 뒤 차원을 확장하여 다차원 배열을 생성합니다.

예제: 3차원 배열 만들기

먼저 3x3 2차원 배열 a를 생성합니다.

a = [7 9 5; 6 1 9; 4 3 2]

실행 결과:

a =
     7     9     5
     6     1     9
     4     3     2

이제 a(:,:,2)에 값을 할당하여 세 번째 차원을 추가합니다.

a(:, :, 2) = [1 2 3; 4 5 6; 7 8 9]

실행 결과:

a(:,:,1) =
     7     9     5
     6     1     9
     4     3     2

a(:,:,2) =
     1     2     3
     4     5     6
     7     8     9

ones, zeros, rand로 다차원 배열 생성

b = rand(4,3,2)

4x3x2 크기의 3차원 난수 배열이 생성됩니다.

cat() 함수로 배열 결합

cat() 함수는 지정된 차원을 따라 배열들을 연결합니다.

B = cat(dim, A1, A2, ...)

예제

a = [9 8 7; 6 5 4; 3 2 1];
b = [1 2 3; 4 5 6; 7 8 9];
c = cat(3, a, b, [2 3 1; 4 7 8; 3 9 0])

실행 결과:

c(:,:,1) =
     9     8     7
     6     5     4
     3     2     1

c(:,:,2) =
     1     2     3
     4     5     6
     7     8     9

c(:,:,3) =
     2     3     1
     4     7     8
     3     9     0

배열 조작 함수

MATLAB은 배열의 정렬, 회전, 순열 변경, 형태 변환, 이동 등을 위한 다양한 함수를 제공합니다.

함수용도
length벡터 길이 또는 최대 배열 차원
ndims배열 차원 수
numel배열 요소 개수
size배열 크기
iscolumn열 벡터 여부 판단
isempty빈 배열 여부 판단
ismatrix행렬 여부 판단
isrow행 벡터 여부 판단
isscalar스칼라 여부 판단
isvector벡터 여부 판단
blkdiag블록 대각 행렬 구성
circshift순환 이동
ctranspose복소 공액 전치
diag대각 행렬 및 대각 요소
flipdim지정 차원 기준 뒤집기
fliplr좌우 뒤집기
flipud상하 뒤집기
ipermuteN-D 배열 차원 순열 역변환
permuteN-D 배열 차원 재배열
repmat배열 복제 및 타일링
reshape배열 형태 변경
rot9090도 회전
shiftdim차원 이동
issorted정렬 여부 확인
sort오름차순/내림차순 정렬
sortrows행 기준 정렬
squeeze크기 1인 차원 제거
transpose전치
vectorize표현식 벡터화

예제: 길이, 차원, 요소 수

x = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9];
length(x)  % x 벡터의 길이
y = rand(3, 4, 5, 2);
ndims(y)   % y 배열의 차원 수
s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab'];
numel(s)   % s의 요소 수

실행 결과:

ans = 8
ans = 4
ans = 23

예제: 배열 요소 순환 이동

a = [1 2 3; 4 5 6; 7 8 9];
b = circshift(a, 1);        % 첫 번째 차원을 아래로 1 이동
c = circshift(a, [1 -1]);   % 첫 번째 차원 아래로 1, 두 번째 차원 왼쪽으로 1 이동

실행 결과:

a =
     1     2     3
     4     5     6
     7     8     9

b =
     7     8     9
     1     2     3
     4     5     6

c =
     8     9     7
     2     3     1
     5     6     4

배열 정렬

v = [23 45 12 9 5 0 19 17];
sort(v)              % 벡터 정렬
m = [2 6 4; 5 3 9; 2 0 1];
sort(m, 1)           % 행 방향(열별) 정렬
sort(m, 2)           % 열 방향(행별) 정렬

실행 결과:

v =
    23    45    12     9     5     0    19    17
ans =
     0     5     9    12    17    19    23    45

m =
     2     6     4
     5     3     9
     2     0     1
ans =
     2     0     1
     2     3     4
     5     6     9
ans =
     2     4     6
     3     5     9
     0     1     2

셀 배열(Cell Array)

셀 배열은 인덱싱된 셀들의 배열로, 각 셀은 서로 다른 차원과 데이터 유형을 가진 배열을 저장할 수 있습니다.

cell 함수로 셀 배열 생성

C = cell(dim)
C = cell(dim1, ..., dimN)
D = cell(obj)

예제

c = cell(2, 5);
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}

실행 결과:

c =
  2×5 셀 배열
    {'Red'   }    {'Blue' }    {'Green' }    {'Yellow'}    {'White' }
    {[   1]}    {[   2]}    {[   3]}    {[    4]}    {[    5]}

셀 배열 데이터 접근

셀 배열 요소를 참조하는 두 가지 방법이 있습니다.

소괄호로 셀 집합 참조

c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c(1:2, 1:2)

실행 결과:

ans =
  2×2 셀 배열
    {'Red' }    {'Blue'}
    {[  1]}    {[  2]}

중괄호로 셀 내용 참조

c{1, 2:4}

실행 결과:

ans = 'Blue'
ans = 'Green'
ans = 'Yellow'

MATLAB

  1. C# 배열 마스터하기: 선언, 초기화, 조작과 LINQ 연산
  2. C# 가변 배열(Jagged Array): 선언, 초기화, 접근 완전 가이드
  3. Java 배열 복사 기법: 대입, 루프, System.arraycopy, Arrays.copyOfRange 총정리
  4. C++ 배열 완전 정복: 선언, 초기화, 포인터 기법
  5. C++ 동적 배열 할당 완벽 가이드: new, delete, 실전 코드 예제
  6. MATLAB: 선도적인 수치 연산 환경 종합 개요
  7. MATLAB 변수 이해: 기초와 예제
  8. 효율적인 계산을 위한 필수 MATLAB 명령어
  9. MATLAB 행렬 기초 마스터: 생성, 참조, 데이터 조작
  10. MATLAB 숫자 유형: 정수, 부동소수점, 변환과 범위 총정리