공대생의 일상

[Matlab] 1*n 행렬 일정 범위로 분류해 새로운 n*m 행렬 만들기 / 데이터 분류하기기 본문

code

[Matlab] 1*n 행렬 일정 범위로 분류해 새로운 n*m 행렬 만들기 / 데이터 분류하기기

mortagage 2017. 7. 27. 16:03


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

 범위의 값들




Comments