텍스트 파일에서 혼합된 데이터를 테이블로 가져오기
readtable 함수를 사용하여 텍스트 데이터와 숫자형 데이터가 혼합된 데이터를 테이블로 가져오고,
변수의 데이터형을 지정한 다음, 테이블에 새 변수를 추가하는 방법을 보여줍니다.
1. 텍스트 파일 읽기
T = readtable('outages.csv');
head(T,5)
ans=5×6 table
Region OutageTime Loss Customers RestorationTime Cause
_____________ ________________ ______ __________ ________________ ___________________
{'SouthWest'} 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 {'winter storm' }
{'SouthEast'} 2003-01-23 00:49 530.14 2.1204e+05 NaT {'winter storm' }
{'SouthEast'} 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 {'winter storm' }
{'West' } 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 {'equipment fault'}
{'MidWest' } 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 {'severe storm' }
2. VariableNames
가져오기 옵션의 setvartype 함수를 사용하여 변수의 데이터형을 지정합니다. 먼저 파일에 대한 import options 객체를 생성합니다. 데이터 파일에는 여러 유형의 변수가 포함되어 있습니다. 첫 번째 변수와 마지막 변수를 categorical형 배열로 지정하고, 두 번째 변수와 다섯 번째 변수를 datetime형 배열로 지정하고, 나머지 변수는 double형으로 지정합니다.
opts = detectImportOptions('outages.csv');
varNames = opts.VariableNames ;
varTypes = {'categorical','datetime','double',...
'double','datetime','categorical'};
opts = setvartype(opts,varNames,varTypes);
T = readtable('outages.csv',opts);
head(T,5)
ans=5×6 table
Region OutageTime Loss Customers RestorationTime Cause
_________ ________________ ______ __________ ________________ _______________
SouthWest 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 winter storm
SouthEast 2003-01-23 00:49 530.14 2.1204e+05 NaT winter storm
SouthEast 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 winter storm
West 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 equipment fault
MidWest 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 severe storm
- head : 5열까지 출력
- VariableNames : 컬럼이름 출력
- varTypes : type
3. 테이블에 새 변수 추가하기
테이블 T에는 OutageTime과 RestorationTime이 포함되어 있습니다. 각 정전의 지속 시간을 계산하고 이 데이터를 테이블에 추가합니다.
T.Duration = T.RestorationTime - T.OutageTime;
head(T,5)
T에 Duration 컬럼을 추가할 수 있습니다.
restorationtime과 outagetime 을 빼서, 새롭게 추가할 수 있습니다.
비디오 파일 읽어오기
1. 비디오 파일 읽기
비디오에서 특정 시간 또는 프레임 인덱스에서 시작하는 프레임을 읽어오거나 지정된 구간 내의 프레임을 읽어오거나 비디오 내 모든 프레임을 읽어옵니다.
vidObj = VideoReader('xylophone.mp4');
CurrentTime 속성을 설정하여 파일 시작부터 0.5초 후에 읽어오기가 시작되도록 지정합니다.
vidObj.CurrentTime = 0.5;
readFrame 메서드를 사용하여 파일 끝에 도달할 때까지 비디오 프레임을 읽어옵니다.
while hasFrame(vidObj)
vidFrame = readFrame(vidObj);
imshow(vidFrame)
pause(1/vidObj.FrameRate);
end
allFrames = read(vidObj);
whos allFrames
Name Size Bytes Class Attributes
allFrames 240x320x3x141 32486400 uint8
- whos 를 사용해서 allFrames 의 속성을 출력할 수 있습니다.
2. 비디오 파일을 이미지로 출력할 수 있습니다.
VideoReader 생성
파일에서 프레임을 읽어 들이는 데 사용할 VideoReader를 만듭니다.
shuttleVideo = VideoReader('shuttle.avi');
이미지 시퀀스 생성
비디오를 따라 순환하면서 각 프레임을 img라는 너비×높이×3 배열로 읽어 들입니다. imgN.jpg 형식의 이름(여기서 N = 프레임 번호)을 사용하여 각 이미지를 JPEG 파일로 작성합니다.
| img001.jpg|
| img002.jpg|
| ...|
| img121.jpg|
ii = 1;
while hasFrame(shuttleVideo)
img = readFrame(shuttleVideo);
filename = [sprintf('%03d',ii) '.jpg'];
fullname = fullfile(workingDir,'images',filename);
imwrite(img,fullname) % Write out to a JPEG file (img1.jpg, img2.jpg, etc.)
ii = ii+1;
end
'MATLAB' 카테고리의 다른 글
MATLAB 이미지인식 만들기 (0) | 2022.01.30 |
---|---|
MATLAB 조건문 / if switch, for , while ... (0) | 2022.01.24 |
matlab 완전 기초 주석추가 / 객체지향 (0) | 2022.01.22 |
함수 function (0) | 2022.01.22 |
행렬과 배열 (0) | 2022.01.21 |
댓글