7
배열의 종류 13 th W k 2010 13 th Week , 2010 학습 목표 학습 목표 매트랩에서 사용되는 여러 데이터 형태 이해 매트랩에서 사용되는 여러 데이터 형태 이해 숫자 배열과 문자 배열 생성 및 사용 다차원 배열을 만들고 그 배열의 원소들을 읽고 쓸 수 있어야 함 셀과 구조체 배열 생성 및 사용

배열의종류 - Hallymgraphics.hallym.ac.kr/teach/2010/na/src/chap10.pdf · 2011. 2. 8. · 행렬연산과함수 매트랩이저장할수있는데이터의종류 [그림10.2] 매트랩이지원하는배열의종류

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 배열의종류 - Hallymgraphics.hallym.ac.kr/teach/2010/na/src/chap10.pdf · 2011. 2. 8. · 행렬연산과함수 매트랩이저장할수있는데이터의종류 [그림10.2] 매트랩이지원하는배열의종류

배열의 종류

13th W k 201013th Week, 2010

학습 목표학습 목표

■ 매트랩에서 사용되는 여러 데이터 형태 이해■ 매트랩에서 사용되는 여러 데이터 형태 이해■ 숫자 배열과 문자 배열 생성 및 사용■ 다차원 배열을 만들고 그 배열의 원소들을 읽고

쓸 수 있어야 함■ 셀과 구조체 배열 생성 및 사용

Page 2: 배열의종류 - Hallymgraphics.hallym.ac.kr/teach/2010/na/src/chap10.pdf · 2011. 2. 8. · 행렬연산과함수 매트랩이저장할수있는데이터의종류 [그림10.2] 매트랩이지원하는배열의종류

행렬 연산과 함수행렬 연산과 함수

■ 매트랩이 저장할 수 있는 데이터의 종류■ 매트랩이 저장할 수 있는 데이터의 종류■ [그림 10.2]

매트랩이 지원하는 배열의 종류■ 매트랩이 지원하는 배열의 종류■ [그림 10.3]

셀 배열 체 배열 여러 데이터 형 함께 저장■ 셀 배열, 구조체 배열 – 여러 데이터 형을 함께 저장

숫자 데이터 형 (1)숫자 데이터 형 (1)

■ 배정밀도 부동소수점 수■ 배정밀도 부동소수점 수■ Double-precision floating-point numbers – 8 bytes

realmax realmin■ realmax, realmin

■ 단일정밀도 부동소수점 수f■ Single-precision floating-point numbers – 4 bytes

■ single( ), double( )■ 저장용량 vs. 정밀도 (예: 조화급수의 합)

n = single( 1 : 1e7 );harmonic = 1 /n;harmonic = 1./n;partial_sum = cumsum( harmonic );m = 1000 : 1000 : 1e7;partial sum selected = partial sum(m);partial_sum_selected partial_sum(m);hold onplot( partial_sum_selected, ‘:’ );

Page 3: 배열의종류 - Hallymgraphics.hallym.ac.kr/teach/2010/na/src/chap10.pdf · 2011. 2. 8. · 행렬연산과함수 매트랩이저장할수있는데이터의종류 [그림10.2] 매트랩이지원하는배열의종류

숫자 데이터 형 (2)숫자 데이터 형 (2)

■ 정수■ 정수■ [표 10.1] 매트랩의 8가지 정수형

영상 정보(image information) 저장할 때 사용됨■ 영상 정보(image information) 저장할 때 사용됨

복소수■ 복소수■ 기본: 배정밀도 (실수부, 허수부 각각 8bytes)

■ 실습문제 10.1

문자와 문자열 데이터문자와 문자열 데이터

■ 문자열 정의: ‘ ‘ (작은 따옴표)■ 문자열 정의: (작은 따옴표)H = ‘Holly’; H(5)ans =

y

■ 문자의 ASCII 코드 출력

y

d bl ( ‘ ’ ) h ( 98 )double( ‘a’ )ans =

97

char( 98 )ans =

b

■ 배열 안에 숫자 정보와 문자 정보 문자 취급■ 수학계산의 경우 숫자 취급

[ ‘a’ 3 ]ans =

a└

‘a’ + 3ans =

100

■ 실습문제 10.2

Page 4: 배열의종류 - Hallymgraphics.hallym.ac.kr/teach/2010/na/src/chap10.pdf · 2011. 2. 8. · 행렬연산과함수 매트랩이저장할수있는데이터의종류 [그림10.2] 매트랩이지원하는배열의종류

기호 데이터 논리 데이터 희소 행렬기호 데이터, 논리 데이터, 희소 행렬

■ 기호 데이터 (symbolic data)■ 기호 데이터 (symbolic data)■ 숫자 대신 기호로 직접 수학연산 수행 Chapter 11

L = sym(‘x^2-2’)

논리 데이터

L = sym( x 2-2 )L =x^2-2

■ 논리 데이터x = 1:5; y = [2, 0, 1, 9, 4];z = x > y

■ 희소 행렬 (sparse matrix)

z =0 1 1 0 1

■ 배열 원소의 대부분이 0인 행렬■ 희소행렬 방식: 0이 아닌 원소의 위치와 값만 저장하

는 방식 N = eye( 1000 );P = sparse( N );

다차원 배열다차원 배열

■ 2차원보다 차원이 많은 배열■ 2차원보다 차원이 많은 배열■ [그림 10.5] 여러 페이지(page)로 구성됨

MATLAB에서는 3차원 이상의 다차원 배열도 지원■ MATLAB에서는 3차원 이상의 다차원 배열도 지원x = [ 1, 2, 3; 4, 5, 6 ];y = 10 * x;yz = 10 * y;w = 10 * z;my_3D_array( :, :, 1 ) = x;my_3D_array( :, :, 2 ) = y;my_3D_array( :, :, 3 ) = z;my_3D_array( :, :, 4 ) = w;

■ 실습문제 10.3

Page 5: 배열의종류 - Hallymgraphics.hallym.ac.kr/teach/2010/na/src/chap10.pdf · 2011. 2. 8. · 행렬연산과함수 매트랩이저장할수있는데이터의종류 [그림10.2] 매트랩이지원하는배열의종류

문자 배열 (1)문자 배열 (1)

■ char 함수■ char 함수■ 문자 배열을 구성하는 모든 행의 원소 수가 같아지도

록 빈칸을 채움록 빈칸을 채움Q = char('Holly', 'Steven', 'Meagan', 'David', 'Michael', 'Heidi‘)Q =HollyHolly Steven Meagan David

[ 문자 숫자 ] 문자 배열

David MichaelHeidi

■ [ 문자, 숫자 ] 문자 배열R = [ 98; 84; 73; 88; 95; 100 ];S = num2str(R);disp( [ Q R ] )disp( [ Q S ] )

문자 배열 (2)문자 배열 (2)

■ 파일 이름 만들기에 유용■ 파일 이름 만들기에 유용■ 예제) 크기를 모르는 some_data 파일의 데이터에서

한 열에 하나씩 새 파일에 저장하여라한 열에 하나씩 새 파일에 저장하여라.load some_data;[rows, cols] = size(some_data);f k 1 lfor k = 1 : cols

file_name = [ ‘my_data’, num2str(k) ];data = some_data( :, k)’;

( fil ‘d t ’ )

실습문제 10 4

save( file_name, ‘data’ );end

■ 실습문제 10.4■ 예제 10.1

Page 6: 배열의종류 - Hallymgraphics.hallym.ac.kr/teach/2010/na/src/chap10.pdf · 2011. 2. 8. · 행렬연산과함수 매트랩이저장할수있는데이터의종류 [그림10.2] 매트랩이지원하는배열의종류

셀 배열셀 배열

■ 다른 유형의 데이터들을 함께 저장■ 다른 유형의 데이터들을 함께 저장>> A = 1:3; >> B = [ ‘abcedfg’ ];>> B [ abcedfg ]; >> C = single( [ 1, 2, 3; 4, 5, 6 ] );>> my_cellarray = { A, B, C }my cellarray =y_ y

[1x3 double] ‘abcdefg’ [2x3 single]>> celldisp( my_cellarray )my_cellarray{1} = >> my cellarray(1)y y

1 2 3my_cellarray{2} =abcdefg

y_ y( )ans =

[1x3 double]>> my_cellarray{1}

my_cellarray{3} =1 2 34 5 6

y yans =

1 2 3>> my_cellarray{3}(1,2)ans =

2

구조체 배열 (1)구조체 배열 (1)

■ 필드(field)를 사용하여 저장된 각 행렬의 위치를■ 필드(field)를 사용하여 저장된 각 행렬의 위치를지정

셀 배열 인덱스를 사용하여 행렬의 위치를 지정■ 셀 배열 – 인덱스를 사용하여 행렬의 위치를 지정>> A = 1:3; B = [ ‘abcedfg’ ]; C = single( [ 1, 2, 3; 4, 5, 6 ] );>> my_structure.some_numbers = Aymy_structure =

some_numbers: [1 2 3]>> my_structure.some_letters = Bmy_structure =

some_numbers: [1 2 3]some_letters: 'abcdefg‘

b C>> my_structure.some_more_numbers = Cmy_structure =

some_numbers: [1 2 3]some lette s: 'abcdefg'some_letters: 'abcdefg'

some_more_numbers: [2x3 single]

Page 7: 배열의종류 - Hallymgraphics.hallym.ac.kr/teach/2010/na/src/chap10.pdf · 2011. 2. 8. · 행렬연산과함수 매트랩이저장할수있는데이터의종류 [그림10.2] 매트랩이지원하는배열의종류

구조체 배열 (2)구조체 배열 (2)

■ 배열의 크기 확장■ 배열의 크기 확장>> my_structure(2).some_numbers = [2 4 6 8]my_structure = 1 2 i h fi ld1x2 struct array with fields:

some_numberssome_letters

b

■ 배열의 정보 접근

some_more_numbers

>> t t (2)>> my_structure(2).some_numbersans>> my_structure(2)

ans = some_numbers: [2 4 6 8]some letters: []

ans =2 4 6 8

>> my_structure(2).some_numbers(2)ans =

■ 변수 편집기 (variable editor)

some_letters: []some_more_numbers: []

ans =4

■ 예제 10.2