본문 바로가기
Matlab

Matlab 행렬 길이가 다른 데이터 하나로 처리하기(CELL)

by 매일사직서 2023. 5. 29.
반응형

Matlab은 기본적으로 행렬 계산을 자주 하는데요. 행과 열의 개수가 동일해야 하나의 변수에 담을 수 있습니다. 그러나 하다가 보면 표본마다 데이터의 길이가 다른 경우를 종종 볼 수 있습니다. 처음에는 차이나는 개수만큼 0을 넣어서 맞추어 계산을 했습니다. 그러나 다른 개념으로 접근을 하여 쉽게 해결하였습니다. 아래에서 확인해 보겠습니다. 

cell 구문 섬네일
데이터 하나로 처리하기

Matlab CELL 활용하기

저는 c나 c++ 등 다른 언어는 사용할 줄 모릅니다. 그래서 CELL의 개념을 몰랐습니다. CELL은 데이터 컨테이너라고 칭합니다. 어떤 형이든 상관없이 모두 하나의 CELL에 다 넣을 수 있습니다. 예제를 보여드리겠습니다.

data1 = rand(1,1);
data2 = rand(1,2);
data3 = rand(1,3);
 
total_data = [data1 data2 data3]
위처럼 코드를 짜게 되면 오류가 발생하게 됩니다. data1은 데이터 길이가 1개 data2는 2개, data3은 3개라서 길이가 달라 오류가 발생 합니다.
data1 = rand(1,1);
data2 = rand(1,2);
data3 = rand(1,3);
 
total_data{1,1} = data1;
total_data{1,2} = data2;
total_data{1,3} = data3;
 
위처럼 코드를 구현하게 되면 모두 total_data라는 cell안에 포함되게 됩니다. 

cell 예시
cell 예시

위 CELL 데이터는 Matlab으로 일을 하시는 분이라면 아주 아주 중요한 개념입니다. 데이터의 길이가 다른 경우가 종종 발생하기 때문입니다. 그렇게 되면 Matlab 코드 구문에서 중간에 멈추는 일이 자주 발생합니다. 

저는 데이터를 불러와서 어떤 처리를 할 때는 cell 구문을 활용하여 코드를 구현합니다. 

Matlab CELL 예제 코드

clear all
close all
 
sample_length = 1:100;
 
for i = 1:100
data = rand(1,sample_length(i));
test_data{i,1} = data;
end
 
 
간단하게 위 처럼 데이터 갯수가 바뀌는 데이터를 생성하고 cell 구문에 저장하는 구문입니다. 
for k = 1:length(test_data)
plot_data = test_data{i,:};
plot(plot_data,'ro')
end

위 구문은 저장한 test_data cell 배열을 하나씩 불러와서 figure를 그리는 작업입니다. 보통 데이터를 불러와서 신호처리를 하겠죠. 이런 식으로 cell 방식으로 데이터를 저장하고 불러와서 다양한 처리를 할 수 있으니 cell은 꼭 숙지하시고 업무 및 공부에 사용하시길 바랍니다. 

 

반응형

댓글