Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
배열의 종류
13th W k 201013th Week, 2010
학습 목표학습 목표
■ 매트랩에서 사용되는 여러 데이터 형태 이해■ 매트랩에서 사용되는 여러 데이터 형태 이해■ 숫자 배열과 문자 배열 생성 및 사용■ 다차원 배열을 만들고 그 배열의 원소들을 읽고
쓸 수 있어야 함■ 셀과 구조체 배열 생성 및 사용
행렬 연산과 함수행렬 연산과 함수
■ 매트랩이 저장할 수 있는 데이터의 종류■ 매트랩이 저장할 수 있는 데이터의 종류■ [그림 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, ‘:’ );
숫자 데이터 형 (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
기호 데이터 논리 데이터 희소 행렬기호 데이터, 논리 데이터, 희소 행렬
■ 기호 데이터 (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
문자 배열 (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
셀 배열셀 배열
■ 다른 유형의 데이터들을 함께 저장■ 다른 유형의 데이터들을 함께 저장>> 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]
구조체 배열 (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