공대생의 일상
[Matlab] 1*n 행렬 일정 범위로 분류해 새로운 n*m 행렬 만들기 / 데이터 분류하기기 본문
data 값이 1열로 쭉 1000개정도 이어져 있는 것을
일정 간격 (ex)100개씩)으로 잘라 새로운 10*100 행렬을 만드는 code 입니다.
데이터의 변수를 data 라고 할때,
data=[1; 2; 3; 4; 5; ...... 999; 1000; ] ;
이렇게 1000개의 데이터가 있는 1열 함수를 생각해 봅시다.
즉, 우리가 일반적으로 보는 행렬을 생각해보면
1
2
3
4
.
.
.
999
1000
이런식으로 되어있는 행렬이지요.
이 행렬을 100개씩 나누어 즉, 10개의 col을 가진 10*100 개의 행렬을 가지고 싶은 것 입니다.
즉
1 101 201 . . . 901
2 102 202 . . . 902
3 103 203 . . . 903
. . . . . . .
. . . . . . .
. . . . . . .
100 200 300 . . . 1000
다음과 같은 행렬이 나오도록 하는 것 입니다.
그때 코드는 다음과 같이 짜면 되는데요
data=[];
new_data=[];
data=abs(data);
number=10;
for n=1:10
new_data(1:number,n)=data(1+(number*(n-1)):number*n,1);
end
코드 하나 하나의 설명을 하도록 하겠습니다.
data=[];
new_data=[];
-> 새로운 행렬 (data, new_data) 생성 , data 행렬에 data 넣으면 됩니다.
number=100;
-> number 는 내가 원하는 분류 범위를 지정해주면 됩니다. (여기서는 100개씩 분류하고 싶어 10으로 값 설정)
for n=1:10
new_data(1:number,n)=data(1+(number*(n-1)):number*n,1);
end
-> 10번씩 반복하는 반복문
new_data(1:number,n) : n번째 col 에 1~number 까지의 값
data(1+(number*(n-1)):number*n,1) : data 행렬의 1+(number*(n-1))~number*n
범위의 값들