의료통계학-Matlab 자료-part II

Download Report

Transcript 의료통계학-Matlab 자료-part II

Ch.2 프로그램 작성기법
관계 및 논리 연산자
•
관계연산자
– 논리 데이터 형식: 1은 참을, 0은 거짓
– 논리들은 관계 및 논리 연산자/함수, true 및 false 함수에 의하여 생성:
>> a = true
a=1
>> b = false
b=0
>> c = 1
c=1
•
관계 연산자:
연산자
의미
==
대등
~=
같지 않음
<
작은
>
큰
<=
작거나 같은
>=
크거나 같은
1
관계 및 논리 연산자
•
논리연산자
– 논리 표현을 수행하는 경우 (거짓인 경우) 0이나 (참인 경우) 1을 부여
– 스칼라들 사이의 비교: 관계가 참이면 논리 1이, 거짓이면 논리 0이 생성:
>> 2 > 3
ans = 0
– OR 연산자 |: 두 수들이 0이라면 0을, 그렇지 않으면 1을 제시.
– |(OR) 연산자의 예:
>> 2 | 3
ans = 1
2
관계 및 논리 연산자
– 행렬-행렬 비교: 해당되는 원소 쌍들이 비교
– 행렬-스칼라 비교: 스칼라가 각 행렬원소와 비교
>> [2 3] < [3 2]
ans = 1 0
>> x = -2:2; x >= 0
ans = 0 0 1 1 1
>> A = [1 2; 3 4]; B = 2*ones(2);
>> A == B
ans =
01
00
>> A > 2
ans =
00
11
3
관계 및 논리 연산자
– 어떤 조건에 부합되는 배열 원소들을 선택 가능
– 예: x(x >= 0)은 x의 0이 아닌 원소들(혹은 보다 정확하게 실수부가 0이 아닌 원소들)
만으로 구성되는 벡터를 제시
>> x = -2:2;
>> x(x >= 0)
ans = 0 1 2
– 크기가 같으면서 원소들이 서로 동일한지를 조사: isequal(A,B)를 이용:
>> A = [1 2; 3 4]; B = 2*ones(2);
>> isequal(A,B)
ans = 0
4
관계 및 논리 연산자
– 이름이 is로 시작되는 논리함수:
논리 is* 함수
기능
ischar
char 배열(문자열)인지를 테스트
isempty
빈 배열인지를 테스트
isequal
배열들이 서로 동일한지를 테스트
isfinite
유한 배열 원소들을 검지
isfloat
부동 소수점 배열(single, 혹은 double)인지를 테스트
isinf
무한 배열 원소들을 검지
isinteger
정수 배열인지를 테스트
islogical
논리 배열인지를 테스트
isnan
NaN 배열 원소들을 검지
isnumeric
수치 배열(정수, 혹은 부동 소수점)인지를 테스트
isreal
실수 배열인지를 테스트
isscalar
스칼라 배열인지를 테스트
issorted
정렬된 벡터인지를 테스트
isvector
벡터 배열인지를 테스트
5
관계 및 논리 연산자
– 예: isinf(A)는 크기가 A와 같으며 A의 원소가 +, 혹은 - inf인 위치에 참(1)을 포함하고
그렇지 않은 위치에는 거짓(0)을 포함하는 논리 배열을 반환
>> A = [1 inf; -inf NaN];
>> isinf(A)
ans =
01
10
– 변수의 값으로 NaN(부정치), inf(무한대), [ ](빈 배열, 혹은 빈 행렬)를 사용 가능
– isreal: A가 허수 부분을 갖지 않는다면 isreal(A)은 참
– 허수부를 갖는지의 여부를 결정:
>>
>>
>>
>>
a = 1;
b = complex(1,0);
c = 1+0i;
[a b c]
ans = 1 1 1
>> [isreal(a), isreal(b), isreal(c)]
ans = 1 0 1
6
관계 및 논리 연산자
– 논리 연산자:
연산자
&
&&
의미
논리 and
단락(短絡) 논리 and
|
논리 or
||
단락(短絡) 논리 or
~
논리 not
xor
배타적 논리 or
all
벡터의 모든 원소들이 0이 아니면 참
any
벡터의 임의의 원소가 0이 아니면 참
7
관계 및 논리 연산자
– &, |, ~ 연산자: 인수들 가운데 하나가 행렬이면 논리 0과 논리 1들의 행렬을 생성
– all 함수를 벡터에 적: 벡터의 모든 원소들이 0이 아니면 1을, 그렇지 않으면 0을 반환
– any 함수: “모든”을 “임의의”로 바꾸어 all 함수와 동일하게 정의
>> x = [-1 1 1]; y = [1 2 -3];
>> x>0 & y>0
ans = 0 1 0
>> x>0 | y>0
ans = 1 1 1
>> xor(x>0,y>0)
ans = 1 0 1
>> any(x>0)
ans = 1
>> all(x>0)
ans = 0
8
관계 및 논리 연산자
– xor은 xor(a,b)와 같이 함수로 호출
– and, or, not: and(a,b), ..., eq(a,b), ...들과 같이 함수 형태로 호출 가능
– &&, ||: 스칼라 표현에 대해서만 작용하며 &이나 |보다 우선적으로 사용
>> any(x>0) && any(y>0)
ans = 1
>> x>0 && y>0
|| 및 && 연산자에 대한 피연산자는 논리형 스칼라 값으로 변환될 수 있어야 합니다.
9
관계 및 논리 연산자
– 산술, 관계 및 논리 연산자들의 우선순위:
우선순위
1(가장 높음)
연산자
괄호()
2
전치(.‘), 거듭제곱(.^), 켤fp복소수 전치('), 행렬의 거듭제곱(^)
3
단항 +, 단항 -, 논리 부정(~)
4
곱(.*), 오른쪽 나누기(./), 왼쪽 나누기(.\), 행렬 곱(*), 행렬
오른쪽 나누기(/), 행렬 왼쪽 나누기(\)
5
더하기(+), 빼기(-)
6
콜론 연산자(:)
7
작은(<), 같거나 작은(<=), 큰(>), 같거나 큰(>=), 동일한(==),
같지 않은(~=)
8
논리 and (&)
9
논리 or (|)
10
논리 단락 and (&&)
11(가장 낮음)
논리 단락 or (||)
10
관계 및 논리 연산자
– 행렬의 경우 all로부터는 all이 각 열에 적용된 결과를 포함하는 행 벡터가 생성
– find: 벡터의 0이 아닌 원소들에 해당하는 지수들을 반환
>> x = [-3 1 0 -inf 0];
>> f = find(x)
f=124
– find의 결과는 다시 그 벡터의 원소들을 추출하는 데에 사용 가능
>> x(f)
ans = -3 1 -Inf
11
관계 및 논리 연산자
– find를 행렬 A에 적용: 지수벡터는 열들을 차례로 포개어 쌓아놓은 벡터(즉 A(:))로 간
주된 A에 해당
– 예: B의 해당되는 위치의 원소들보다 작은 A의 원소들에 0을 설정
>> A = [4 2 16; 12 4 3], B = [12 3 1; 10 -1 7]
A=
4 2 16
12 4 3
B=
12 3 1
10 -1 7
>> f = find(A<B)
f=
1
3
6
>> A(f) = 0
A=
0 0 16
12 4 0
12
프로그램 흐름의 제어
•
if 문
– if 문장의 형태:
if (조건)
(문장)
end
– if 다음에 다른 문장이 이어지면 콤마를 이용하여 if를 그 다음 문장과 분리:
if x > 0, x = sqrt(x); end
– (조건)이 거짓일 경우에만 수행되는 문장: else 다음에 위치
v = exp(1);
if 2^v > v^2
disp('2^v is bigger')
else
disp('v^2 is bigger')
end
13
프로그램 흐름의 제어
– elseif를 이용하여 하나, 혹은 그 이상의 조건들을 추가:
if isnan(x)
disp('Not a Number')
elseif isinf(x)
disp('Plus or minus infinity')
else
disp('A floating point number')
end
14
프로그램 흐름의 제어
•
for 루프
– 사용구조:
for (변수) = (표현)
(문장)
end
– (표현)을 정의하는 다른 방법으로서 대괄호를 사용 가능:
>> for x = [pi/6 pi/4 pi/3], disp([x sin(x)]), end
0.5236 0.5000
0.7854 0.7071
1.0472 0.8660
15
프로그램 흐름의 제어
– for 루프는 중첩사용이 가능
– 예: (i,j) 원소가 j≥i 일때 i/j인 5 x 5 행렬 A를 생성
n = 5; A = eye(n);
for j = 2:n
for i = 1:j-1
A(i,j) = i/j;
A( j,i) = i/j;
end
end
– continue: for 루프의 나머지 문장들을 지나치게 하여 루프의 수행을 다음번 반복단계
로 이동
– 예: 5에서 10까지의 정수들만을 제시
for i = 1:10
if i < 5, continue, end
disp(i)
end
16
프로그램 흐름의 제어
•
while 루프
– 사용 형태:
while (표현)
(문장)
end
– (표현)이 참인 한 (문장)이 수행
– 예: 0이 아닌 가장 작은 부동 소수점 수를 근사
x = 1;
while 1
xmin = x;
x = x/2;
if x == 0, break, end
end
xmin
xmin =
4.9407e-324
17
프로그램 흐름의 제어
– while 루프는 break로 종료 가능
– break는 프로그램의 제어를 해당되는 end 다음의 첫 번째 문장으로 전달
– 중첩된 루프에서 break는 바로 윗 단계의 루프로 수행단계를 이동
– 예: while을 사용하여 무한수열 1-4+2-4+3-4+...의 수치적 합을 계산
% infsum.m : 무한수열의 합
n = 1;
oldsum = -1;
newsum = 0;
while newsum > oldsum
oldsum = newsum;
newsum = newsum + n^(-4);
n = n + 1;
end
newsum
– 수행결과:
>> infsum
newsum =
1.0823
18
프로그램 흐름의 제어
•
switch 문
– “switch (표현)” 다음에 일련의 “case (표현) (문장)”들이 이어지는 것으로 구성
– 경우에 따라 “otherwise (문장)”과 end로 종료
– case들 가운데 어느 것도 평가 결과와 부합되지 않으면 otherwise 다음의 (문장)이 수
행
– 예: 입력에 대하여 세 가지 경우들을 구별
function y = count(x)
switch x
case 1
y = 'one'
case 2
y = 'two'
otherwise
y = 'many'
end
19
프로그램 흐름의 제어
•
Try-Catch 블록
– 프로그램 수행시에 오류가 발생될 경우 사용자가 대처할 수 있는 옵션을 제공
– 기본 구조:
try
(statement1)
catch
(statement2)
end
20
프로그램 흐름의 제어
– 일단 (statement1)의 모든 명령어들은 실행
– 이로부터 아무런 오류가 발생되지 않으면 end로 이동하고 그 후에 이어지는 프로그램
들이 수행
– (statement1)이 수행되는 동안에 오류가 발생되면 catch 문으로 가서 (statement2)의
명령어들이 수행. (예: try 부분에 오류가 있는 경우 catch 부분을 수행)
% catry.m: catch-try
x = ones(5,3);
y = 3*eye(4);
try
z = x*y; % x와 y는 사이즈가 다르므로 두 변수의 곱셈은 error를 발생.
catch
z = nan;
disp('X와 Y는 사이즈가 다름.');
end
z
>> catry
X와 Y는 사이즈가 다름.
z=
NaN
21
셀과 구조체
•
셀
– 셀 배열: “배열의 배열”
– 셀 배열의 원소들은 각기 다른 데이터 형식과 다른 크기를 가질 수 있음
– cell: 빈 셀 배열을 생성. 보통은 중괄호를 이용
>> ca = {1, [2 3], 'four'}
ca =
[1] [1x2 double] 'four'
22
셀과 구조체
– 셀 배열의 특정 원소를 취하는 경우 중괄호를 사용
– 예: ca{2}를 입력하면 ca의 두 번째 원소가 취하여짐
– 구조체: 필드에 따라 데이터 타입이 한정
– 셀 배열: 다양한 데이터 타입을 포함 가능
– 예: 셀 배열은 소괄호나 중괄호를 이용하여 생성
>> A(1,1) = {'박영수'}; A(1,2) =
>> A(2,1) = {'김철수'}; A(2,2) =
>> A
A=
'박영수' [2.0080e+009]
'김철수' [2.0080e+009]
>> A{1,1} = {'박영수'}; A{1,2} =
>> A{2,1} = {'김철수'}; A{2,2} =
>> A
A=
{1x1 cell} {1x1 cell}
{1x1 cell} {1x1 cell}
{2008011254};
{2008010231};
{2008011254};
{2008010231};
23
셀과 구조체
– celldisp 함수를 이용하여 셀 배열의 내용을 확인:
>> celldisp(A)
A{1,1}{1} =
박영수
A{2,1}{1} =
김철수
A{1,2}{1} =
2.0080e+009
A{2,2}{1} =
2.0080e+009
24
셀과 구조체
–
cellplot : 셀 배열을
그림으로 제시
>> cellplot(A)
25
셀과 구조체
– 예: 2 x 2 셀 배열의 설정
>> C = {1:3, pi; magic(2), 'A string'}
C=
[1x3 double] [ 3.1416]
[2x2 double] 'A string'
– 셀 배열의 원소 취하기:
>> C{2,1}
ans =
13
42
>> C{2,1}(1,2)
ans =
3
26
셀과 구조체
•
구조체
– C와 같은 프로그램 언어들에서의 구조체(structure)와 유사
– 셀과 마찬가지로 원소들은 각기 다른 형태와 크기를 가질 수 있음
– 구조체의 생성: struct를 사용
>> sa = struct('data', [1 4 9 16 25], 'description', 'perfect squares')
sa =
data: [1 4 9 16 25]
description: 'perfect squares'
– 어느 특정 원소, 혹은 “필드”에 접속: 배열의 이름과 필드의 이름을 타이프하고 이들
사이를 마침표로 구분
– 구조체의 다른 생성방법:
>> sa = struct;
>> sa.data = [1 4 9 16 25];
>> sa.description = 'perfect squares'
sa =
data: [1 4 9 16 25]
description: 'perfect squares'
27
셀과 구조체
– 어느 특정 원소, 혹은 “필드”에 접속: 배열의 이름과 필드의 이름을 타이프하고 이들
사이를 마침표로 구분
– 구조체의 다른 생성방법:
>> sa = struct;
>> sa.data = [1 4 9 16 25];
>> sa.description = 'perfect squares'
sa =
data: [1 4 9 16 25]
description: 'perfect squares'
28
셀과 구조체
– 구조체의 배열: 데이터베이스 등을 관리할 때 편리
– 예: “name", 'ID", "mark"와 같은 3개의 필드를 가지며 원소가 30개인 student 구조체
배열의 생성
>> student(30) = struct('name','이영수','ID',2008012316','mark',[87 98 76 90]);
>> student(2)
ans =
name: []
ID: []
mark: []
>> student(5).name = '김철수'
student =
1x30 struct array with fields:
name
ID
mark
29
셀과 구조체
– cell2struct, struct2cell: 셀 배열과 구조체 간의 전환을 수행
– num2cell: 주어진 수치 배열과 같은 크기의 셀 배열을 생성
– 동적 구조체의 보기: 4회에 걸친 학생들의 시험성적을 나타내는 구조체
>> marks.Lee_YoungSoo.test(1:4) = [87 98 76 90];
>> marks.Hong_KillDong.test(1:4) = [96 91 88 75];
>> marks.Park_KiYoon.test(1:4) = [90 87 69 94];
– 입력된 학생에 대한 평균점수를 계산:
% testmark.m: Dynamic structure의 사용 예
function avg = testmark(marks,student,first,last)
for i = first:last
scores(i) = marks.(student).test(i);
end
avg = sum(scores)/(last-first+1);
30
셀과 구조체
– 함수 M-파일의 수행 결과:
>> testmark(marks,'Park_KiYoon',1,4)
ans =
85
>> testmark(marks,'Lee_YoungSoo',1,4)
ans =
87.7500
>> testmark(marks,'Hong_KillDong',2,3)
ans =
89.5000
31
셀과 구조체
– 구조체를 이용한 간단한 데이터베이스 생성의 보기: 기상측정 시각과 온도( ) 및 압력
(mmbar) 데이터
>> meteo = struct('City',{'서울','대전','부산'},...
'Time',{9 10 12},...
'Temperature',{27 29 31},...
'Pressure',{1013.2 1013.5 1013.1})
meteo =
1x3 struct array with fields:
City
Time
Temperature
Pressure
>> meteo(3)
ans =
City: '부산'
Time: 12
Temperature: 31
Pressure: 1.0131e+003
32
문자열
– 문자열이나 문자 배열(char 배열): ASCII 값들에 의하여 나타나는 문자들의 배열
– 예:
>> s = 'ABCabc'
s=
ABCabc
>> sd = double(s)
sd =
65 66 67 97 98 99
>> s2 = char(sd)
s2 =
ABCabc
33
문자열
– 2차원 문자배열: 대괄호를 이용
>> subjects = ['Chemistry';'Physics ']
subjects =
Chemistry
Physics
– char: 문자 배열의 생성에 이용
>> W = char('Kinetic energy','Potential energy', 'Momentum','질량')
W=
Kinetic energy
Potential energy
Momentum
질량
– 텍스트 데이터를 셀 배열로 저장 가능:
>> S = {'Kinetic energy';'Potential energy'; 'Momentum';'질량'}
S=
'Kinetic energy'
'Potential energy'
'Momentum'
'질량'
34
문자열
– 문자 배열을 셀 배열로, 혹은 문자의 셀 배열을 문자 배열로 전환 가능:
>> S = cellstr(W);
>> W = char(S);
– 문자열의 각 문자: 2 바이트를 차지
– 문자열을 double 배열로 전환: 각 원소당 8 바이트를 차지하는 ASCII 값들의 배열이
생성
– 예: double('A')는 65
– int2str, num2str, sprintf: 수치변수 값들의 포맷을 변형시켜 생성
>> v = sin((1:3)*pi/6)
v=
0.5000 0.8660 1.0000
>> num2str(v)
ans =
0.5 0.86603 1
>> q = reshape(1:9,3,3)
35
문자열
q=
>>
>>
>>
>>
>>
147
258
369
int2str(q)
ans =
147
258
369
size(ans)
ans =
37
num2str(pi,2) % 자릿수를 지정(2자리)
ans =
3.1
num2str(pi,15)
ans =
3.14159265358979
num2str(pi,'%12.5e') % 출력 포맷을 지정
ans =
3.14159e+00
36
문자열
– sprintf: 보통 포맷 지정자와 함께 사용
– 여러 가지 포맷 형태에 따른 sprintf 출력모양:
sprintf와 포맷지정자
출력
sprintf('%d',round(pi))
3
sprintf('%d',pi)
3.141593e+000
sprintf('%s','hello')
hello
sprintf('The array is %dx%d.',4,5)
The array is 4x5.
sprintf('\n')
(줄 마침 문자)
37
문자열
–
–
>>
>>
>>
>>
문자열은 명령어로
이용 가능
예: 문자열을 명령
어로 이용한 그래프
작성
str = 'sin';
t = linspace(0,2*pi);
q = feval(str,t);
plot(t,q)
38
문자열
– 예: 문자열을 이용한 z=sin(π/6)+cos(π/4)의 계산
>> a = sin(pi/6); b = cos(pi/4);
>> z = eval('a+b')
z=
1.2071
– strcat: 두 문자열들을 보다 긴 하나의 문자열로 연결
– 보기:
>> strcat('Hello',' world')
ans =
Hello world
39
문자열
– strcmp: 두 문자열들을 서로 비교
– strcmp(s,t): s와 t가 동일하면 1(참), 그렇지 않으면 0(거짓)이 반환
– strcmpi: strcmp와 유사한 기능을 수행하지만 대문자와 소문자를 대등한 것으로 간주
– 예:
>> strcmp('Matlab6','matlab7')
ans = 0
>> 'Matlab6'=='Matlab7'
ans = 1 1 1 1 1 1 0
– findstr(s,t): 더 짧은 문자열이 그보다 긴 문자열 속에 나타나는 위치들의 지수들로 이
루어지는 벡터를 반환
>> findstr('bc','abcd')
ans =
2
>> findstr('abacad','a')
ans =
135
40
문자열
– 주어진 문자열에서 빈 칸과 글자를 구분:
>> S = 'I go now';
>> isspace(S)
ans =
01001000
>> isletter(S)
ans =
10110111
– strrep: 하나의 문자열을 다른 문자열로 대체. 혹은 글자를 대체하거나 하나의 문자를
빈 칸으로 대체
>> S = 'I go now';
>> strrep(S,'go','am') % go를 am으로 대체
ans = I am now
>> strrep(S,'go','eat snakes')
ans = I eat snakes now
>> strrep(S,'o','e') % o를 e로 대체
ans = I ge new
41
다차원 배열
– 예: 불규칙 숫자들의 3 x 2 x 2 배열
>> A = randn(3,2,2)
A(:,:,1) =
1.5550 -0.5901
-0.5399 0.0253
2.0988 0.7866
A(:,:,2) =
-0.2387 1.1912
1.6929 0.1464
-0.1882 -1.6969
– 기존의 2차원 배열에서 원소들에 고차원 요소를 할당함으로써 차원 확장이 가능:
>> B = [1 2 3; 4 5 6];
>> B(:,:,2) = ones(2,3)
B(:,:,1) =
123
456
B(:,:,2) =
111
111
42
다차원 배열
– ndims: 차원의 수를 확인
– size: 각 차원의 원소들의 수를 반환
>> ndims(B)
ans = 3
>> size(B)
ans =
232
– cat: 한 문장에서 원소들을 나열하여 다차원 배열을 구성
>> C = cat(3,[1 2 3; 0 -1 -2],[-5 -3 -1; 10 5 0])
C(:,:,1) =
1 2 3
0 -1 -2
C(:,:,2) =
-5 -3 -1
10 5 0
43
다차원 배열
– 선형대수 연산: 차원이 2보다 큰 배열들에 대해서는 정의되지 않음
– 다차원 배열 처리함수:
함수
기능
cat
배열들을 연결
ndims
차원들의 수
ndgrid
다차원 함수들과 안짐작을 위한 배열을 생성
permute
배열 차원을 순열
ipermute
배열 차원을 역순열
shiftdim
차원을 전이
squeeze
단독 차원을 제거
44
Global 변수
•
함수 내에서 작업공간의 변수를 자유롭게 읽어내어 사용하고 싶은 경우 그 변수를
global 변수라고 선언
•
global 변수: 그 변수를 얼마든지 함수 M-파일과 공유할 수 있어서 편리
•
global 변수를 너무 많이 사용하면 언제, 어디에서 변수의 값이 갱신되었는지 알기 어
려움
•
global 변수는 가능한 한 제한적으로 사용
•
global 변수의 선언: 작업공간과 함수 M-파일 두 부분에서 모두 선언
•
예:
global x y
45
Persistent 변수
•
함수 내에서만 내부적으로 변수값을 유지하고 싶은 경우 그 변수를 persistent 변수
로 선언
•
C 언어 등의 static 변수와 같은 기능을 수행
•
persistent 선언: 사용하는 함수 내에서만 수행
•
persistent 변수의 초기치: 함수 내에 변수가 정의되어 있는지의 여부로 판단하며
isempty 함수에 의해 판별.
persistent x y
if(isempty(x)) x=0; end
46
입력 및 출력인수의 분석
•
nargin, nargout, varargin, varargout들을 사용하여 다양한 수의 입력 및 출력인수들
을 처리
•
다른 형태의 입력인수들을 처리하기 위해 isnumeric, ischar 등과 같은 명령어들을 사
용
•
nargin, nargout: 명령어 라인에서 지정된 입력 및 출력 인수들의 수를 제시
•
예: 두 개나 세 개의 입력을 더하여 주는 함수의 보기
function s = add(x, y, z)
if nargin < 2
error('적어도 두 개의 입력인수들이 필요함.')
end
if nargin == 2
s = x + y;
else
s = x + y + z;
end
47
입력 및 출력인수의 분석
•
add(4,5)를 입력한다면 M-파일 내에서 x는 4로, y는 5로 설정되며 z는 미정의
•
z가 정의되지 않은 경우에 z를 인용하는 것을 피하기 위해 nargin을 사용
•
입력인수 varargin의 이용:
function s = add(varargin)
s = sum([varargin{:}]);
•
모든 입력인수들은 셀 배열 varargin에 할당
•
varargin{:}은 콤마로 구분되는 입력인수들의 목록을 구성
•
isnumeric을 사용하여 입력가운데 수치값을 갖지 않는 것이 있으면 오류 메시지를 발
현하는 보기:
function s = add(varargin)
if ~isnumeric([varargin{:}])
error('입력들은 부동 소수점 수이어야 한다.')
end
s = sum([varargin{:}]);
48
프로그램의 편집
•
명령 창에서의 편집
– 명령어 라인, 혹은 편집창에서 프로그램이 두 줄 이상으로 길어질 경우 세 개의 마침
표(...)를 이용하여 프로그램을 여러 줄로 이어 작성 가능:
>> x = 1 + 1/2 + 1/3 + 1/4 + 1/5 + ...
1/6 + 1/7 + 1/8 + 1/9 + 1/10
x=
2.9290
49
프로그램의 편집
– 단축키나 명령어들을
이용 가능:
키
대등한 제어키
기능
Ctrl-p
이전 라인을 호출
Ctrl-n
다음 라인을 호출
Ctrl-b
한 글자 뒤로 이동
오른쪽 화살표( )
Ctrl-f
한 글자 앞으로 이동
Ctrl 왼쪽 화살표
Ctrl-l
한 단어 왼쪽으로 이동
Ctrl 오른쪽 화살표
Ctrl-r
한 단어 오른쪽으로 이동
Home
Ctrl-a
라인의 시작부분
End
Ctrl-e
라인의 끝부분
Esc
Ctrl-u
라인 지우기
Del
Ctrl-d
커서가 있는 글자를 삭제
뒤로가기(backspace)
Ctrl-h
이전 글자를 삭제
Ctrl-k
라인 끝부분까지 삭제
위쪽 화살표(
)
아래쪽 화살표(
왼쪽 화살표(
)
)
Insert
삽입 모드로 전환
Shift-home
라인 시작부분까지 선택
Shift-End
라인 끝부분까지 선택
50
프로그램의 편집
•
•
배열 편집기
작업창의 왼쪽에서 작
업공간 탭을 누른 다음
편집을 원하는 변수 이
름을 더블 클릭: 해당변
수에 대한 스프래드쉬
트 형태가 나타나는데
여기에서 데이터 값들
을 편집 가능
•
혹은 A가 데이터를 나
타내는 변수라고 할 때
openvar('A')를 입력하
면 A에 대한 배열 편집
기가 호출
>> B = randn(5,3)
B=
0.7254 1.4897 0.7172
-0.0631 1.4090 1.6302
0.7147 1.4172 0.4889
-0.2050 0.6715 1.0347
-0.1241 -1.2075 0.7269
>> openvar('B')
51
프로그램의 편집
•
변수의 저장과 호출
– save filename: 작업공간의 모든 변수들은 filename.mat에 저장
– 변수 A와 x 만을 저장하는 경우
>> save filename A x
– load filename: filename.mat으로부터 변수들을 불러옴
– diary: 보고서 등에 삽입하기 위하여 MATLAB 출력을 잡아둘 필요가 있는 경우에 사용
– diary filename을 입력: 모든 이어지는 입력 및 텍스트 출력이 지정된 파일에 복사
– diary 기능의 제거: diary off를 입력
– disp: 변수의 이름이나 ans가 나타나지 않고 변수나 표현의 값을 프린트
>> A = eye(2); disp(A)
10
01
>> disp('Result:'),disp(1/7)
Result:
0.1429
52
프로그램의 편집
•
운영체제와의 접속
– 컴퓨터 운영체제와 작용: cd(디렉토리 바꾸기), copyfile(파일 복사), mkdir(디렉토리 만
들기), pwd(작업 디렉토리를 프린트), dir이나 ls(디렉토리 목록), 그리고 delete(파일 지
우기)
•
정보 찾기
– 정보의 제공:
명령어
제공정보 및 기능
bench
사용자의 컴퓨터 속도를 테스트하기 위한 견주기(benchmark)
demo
실증 프로그램 모음
ver
MATLAB 및 툴박스들의 버전 및 발매일자
version
MATLAB의 버전 및 발매일자
53