일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- html5
- IT
- C
- Inkscape
- 글이_점점_짧아지고_있습니다.
- Nemeth Braille
- 나무위키
- 점자
- python
- 프로그래밍
- matlab
- CSS
- LaTeX
- 수학
- 확률
- 위키
- 프로그래밍 언어
- 선형대수학
- ┌─┐
- javascript
- 자바스크립트
- 물리학
- Java
- C언어
- 오늘의 문제
- HTML5.
- css3
- html
- C++
- 리브레위키
- Today
- Total
SturdyCobble's Study Note
[MATLAB] 09. 데이터 처리와 파일 입출력 본문
NOTICE : 독학인 만큼, 잘못된 내용이 있을 수 있습니다. 내용 지적은 언제나 환영합니다.
더 이상 이 블로그에는 글을 올리지는 않을 예정입니다. 그렇지만 댓글을 달아주시면 최대한 답변드리고자 노력하겠습니다.
※ 이 글은 최소한 Python과 같은 프로그래밍 언어를 한 번 이상 접한 사람을 독자로 가정하여 작성되었습니다. 사용버전은 R2019a기준입니다. 또한 기본적인 프로그램 조작보다는 프로그래밍에 초점을 맞추어 작성하였습니다.
엑셀에서 여러 데이터를 처리하듯, MATLAB에서도 여러 데이터를 처리하고, 시각화할 상황이 생길 수 있습니다. 엑셀에서 행 단위로 측정값을 기록하고, 열마다 측정값의 종류를 다르게 하듯이, 행렬로 다음과 같이 데이터를 저장할 수 있습니다.
%시간 측정값1 측정값2
data = [1.0000 0.6715 0.8884
2.0000 -1.2075 -1.1471
3.0000 0.7172 -1.0689
4.0000 1.6302 -0.8095
5.0000 0.4889 -2.9443
6.0000 1.0347 1.4384
7.0000 0.7269 0.3252
8.0000 -0.3034 -0.7549
9.0000 0.2939 1.3703
10.0000 -0.7873 -1.7115 ] ;
이렇게 구해진 데이터의 평균과 표준편차를 구해봅시다. 이는 mean, std함수로 빠르게 구할 수 있고, 그 결과는 1×N 행렬입니다.
>> mean(data)
ans =
5.5000 0.3265 -0.4414
>> std(data)
ans =
3.0277 0.8597 1.4211
만약, 최댓값과 그 위치를 찾아야 한다면 어떨까요? max함수를 이용하면 됩니다.
>> max(data)
ans =
10.0000 1.6302 1.4384
그런데, 위치에 대한 정보가 없습니다. 이는 max가 1×N배열을 2개 반환하기 때문입니다. 이는 다음과 같이 하여 얻을 수 있습니다. (1×2 행렬을 반환하는 것과 1×1 행렬을 2개 반환하는 것에 차이가 있음을 주의하세요!)
>> [vmax, pmax ] = max(data)
vmax =
10.0000 1.6302 1.4384
pmax =
10 4 6
만약 위치에 대한 정보만 필요하다면 물결표(~)를 이용해 특정 위치의 입력값을 다음과 같이 무시할 수 있습니다.
[~ , pmax] = max(data)
그 외 통계나 데이터 분석 관련 함수는 아래 명령어로 확인가능합니다.
>> % 한번에 다 표시되지 않게 more on인 상태입니다. 단순히 블로그 글이 길어지는 걸 막으려고 추가했습니다.
>> help datafun
Data analysis and Fourier transforms.
Basic operations.
sum - Sum of elements.
prod - Product of elements.
min - Smallest component.
--more--
>> help stats
stats - Return cached values and statistics for MemoizedFunction object
This MATLAB function returns cached values and statistics on the use of a
MemoizedFunction object.
s = stats(mfcn)
--more--
만약, 외부의 데이터를 불러 온다면 어떻게 해야할까요? 이에 관해 save와 load, readtable, writetable, xlsread, xlswrite 등의 함수를 이용할 수 있습니다. 자세한 용법은 각 문서를 참조하시고, 여기서는 간단한 용법만 다뤄보겠습니다.
파일 입출력에 필요한 주요 함수 |
매개변수 및 설명 [ ] 표시는 선택 사항의 의미 |
|
save | save(filename, [variableName], [format]) (모두 string형 또는 문자 벡터) |
[format]에 따라 filename이름을 가진 파일로 변수 [variableName] 저장.(생략시 전체) |
load | load(filename, [format], [variableName]) (모두 string형 또는 문자 벡터) |
[format]에 따라 filename을 [variableName] 변수에 불러옴. |
writetable | writetable(tableVariable, [filename], [options]) (tableVariable빼고 string형 또는 문자 벡터) |
[options]들에 따라서 [filename]에 테이블형 변수 tableVariable를 저장. |
readtable | tableVariable = readtable(filename, [options]) (매개변수는 string또는 char벡터) |
[options]들에 따라서 [filename]을 테이블형 변수로 바꿔 테이블형 반환 |
table2array | table2array(tableVar) | 테이블을 배열로 변환 |
array2table | array2table(arrayVar) | 배열을 테이블을 배열로 변환 |
파일 입출력 시 유용한 함수 |
||
int2str | int2str(intVar) | 정수를 문자열로 변환 |
자세한 설명은 공식 문서를 참고하시면 되겠습니다. 예시는 save, load, sprintf만 가지고 나타내겠습니다.
%시간 측정값1 측정값2
data(:,:,1) = ...
[1.0000 0.6715 0.8884
2.0000 -1.2075 -1.1471
3.0000 0.7172 -1.0689
4.0000 1.6302 -0.8095
5.0000 0.4889 -2.9443
6.0000 1.0347 1.4384
7.0000 0.7269 0.3252
8.0000 -0.3034 -0.7549
9.0000 0.2939 1.3703
10.0000 -0.7873 -1.7115 ] ;
data(:,:,2) = ...
[1.0000 0.8725 0.9884
2.0000 -1.2075 -1.1471
3.0000 0.7172 -1.0689
4.0000 1.6302 -0.8095
5.0000 0.4889 -2.9443
6.0000 1.0347 1.4384
7.0000 0.7269 0.3252
8.0000 -0.3034 -0.7549
9.0000 0.2939 1.3703
10.0000 -0.7873 -1.7115 ] ;
n = 1;
[~,~,lenDat] = size(data);
while n <= lenDat
i = data(:,:,n);
save("data_"+int2str(n)+".txt",'i', '-ascii')
%format생략시 mat파일 형식으로 저장
n = n + 1;
end
load 'data_1.txt' '-ascii' 'dat01'
배열을 파일로 저장했다가 다시 불러오는 예시입니다. 파일을 보면 다음과 같습니다.
'프로그래밍 > MATLAB' 카테고리의 다른 글
[MATLAB] 10. 기초 연산 & 특수문자 (0) | 2019.09.08 |
---|---|
MATLAB으로 (Reduced) Row Echelon Form 구하기 (0) | 2019.09.04 |
[MATLAB] 08. 함수 (0) | 2019.09.01 |
MATLAB으로 벡터장 표시하기 (0) | 2019.08.30 |
MATLAB으로 Newton's Method 구현하기 (0) | 2019.08.26 |