[MATLAB] MATLAB에서 csv 파일 읽고, 처리하는 방법 (readtable)

개요

python에서 생성한 csv 파일을 읽어서 MATLAB으로 그래프를 그려야 함!

 

 

펭귄은 주로 python을 사용해서 시뮬레이션을 한다. 하지만 그래프는 MATLAB이 정말 잘 그려준다. python에도 matplotlib 라이브러리가 있지만, 개인적인 생각으로는 아직 MATLAB을 따라가려면 멀었다..!

 

Tip

MATLAB에서 CSV 파일을 읽으려면 readtable, readmatrix 또는 csvread 함수를 사용할 수 있다. 보통 readtable을 가장 많이 쓰는 것 같다. 다른 함수들은 숫자만 읽어지거나, 불편한 점이 많다. 펭귄은 보통 dataframe을 csv로 저장하고, matlab에서 읽기 때문에 csv를 읽을 때 readtable을 사용했다. readtable csv 데이터를 테이블 형식으로 읽어준다.

 

예제 데이터

예제 데이터(data.csv)

 

펭귄이 사용한 예제 데이터는 위 사진과 같다. data.csv에 10개의 row(행)와 3개의 column(열)을 가진 데이터를 저장했다.

 

readtable 사용법

filename = 'data.csv'; % 파일 이름
dataTable = readtable(filename); % 테이블 형식으로 읽기

% 데이터 확인
disp('CSV 데이터:');
disp(dataTable);

% 헤더가 없을 때는, 아래 옵션을 추가해주면 된다
% dataTable = readtable('data.csv', 'ReadVariableNames', false); % 헤더 없이 읽기

 

readtable 결과
readtable 결과

 

 

readtable 함수에 파일 경로만 넣어주면, 알아서 읽어준다. 컬럼도 잘 인식해 줘서 좋다.

 

CSV 파일 데이터 접근 및 처리

특정 열 또는 행 접근

열과 행은 기본 MATLAB 문법을 사용해서 접근할 수 있다.

% 특정 열 데이터 접근
columnData = dataTable.ColumnName;

disp('특정 열 데이터:');
disp(columnData);

% 특정 행 접근
rowData = dataTable(1, :);

disp('특정 행 데이터:');
disp(columnData);

특정 열 및 행 접근
특정 열 및 행 접근

데이터 필터링

데이터 접근시, 원하는 조건을 줘서 데이터를 필터링할 수 있다.

% 특정 조건 (예: ColumnName 값이 10보다 큰 행 선택)
filteredData = dataTable(dataTable.ColumnName > 5, :);

disp('조건을 만족하는 데이터:');
disp(filteredData);

데이터 필터링 1
데이터 필터링 1

% 문자열 조건 (예: 'Category' 열에 'A' 포함된 행 선택)
filteredData = dataTable(strcmp(dataTable.Category, 'A'), :);

disp('조건을 만족하는 데이터:');
disp(filteredData);

데이터 필터링 2
데이터 필터링 2

readmatrix 사용법

readmatrix를 사용하면, 숫자만 읽을 수 있다. column(열)도 인식 못하고, category형 변수는 모두 NaN으로 인식됐다.

filename = 'data.csv'; % 파일 이름
dataMatrix = readmatrix(filename); % 테이블 형식으로 읽기

% 데이터 확인
disp('CSV 데이터:');
disp(dataMatrix);

readmatrix 결과