Capstone

Expressed the Velocity

이타심 2021. 11. 10. 20:55
728x90
속도 구현


#시작하며

지난 포스팅까지는 데이터를 형성하여 smoothing을 통해 데이터의 이질감을 제거하였다. 이번 과정에서는, 생성한 데이터를 토대로 구성되는 Pair들을 점진적으로 제거함으로, 환자가 실제로 그릴 때 발생하는 그리기 속도를 구현해볼 것이다.

 

#속도 구현

사람이 그린 것과 같은 속도를 표현하려면 어떤 것이 필요할까? 일단 Pair로 구성된 데이터에, 구간을 설정하여 해당 구간마다 상이한 삭제 비율을 설정하여 점진적으로 적용해야 할 것이다.

 

  • 구간 설정하기

가장 우선적으로 실행해야 할 것은 구간을 설정하는 것이다. 일정하게 설정한 수만큼 구간을 나눈다면, 실제 데이터와 거리감이 생길 수 있기 때문에, 랜덤 하게 구간을 설정하였다.

랜덤하게 설정된 10개의 구간

위 그림은, 구간의 수를 10개로 설정한 뒤에 랜덤 하게 설정한 두 가지 Raw data이다. Matlab의 randperm함수를 사용하여 구간의 수만큼의 랜덤한 숫자를 설정하였고, 해당 수를 index로 가지는 배열을 구간의 경계 값으로 설정하였다.

section =10; //구간의 수

tmp = randperm(n,section); // 1부터 설정한 pair의 수 n사이에서 구간의 수만큼 랜덤한 숫자를 생성

for i = 1:1:section %랜덤하게 구간설정
	x_x(tmp(i)) = 0;
	y_y(tmp(i)) = 0;
end

이렇게 랜덤 하게 구간을 설정한 뒤에 생기는 문제는, 구간마다 해당 구간 내에 포함되는 Pair들의 수가 다르다는 것이다. 따라서 각 배열의 Pair를 찾는 과정을 실시하였다.

  • 구간 내 Pair

랜덤하게 설정된 구간에서의 Pair를 구하기 위해, 랜덤하게 설정한 구간의 경계 값을 모두 저장하였다. 가령 위 코드에서 배열 tmp의 값을 저장하였다. 이후 sort함수를 통해 해당 값들을 순차적으로 정렬시켜, X(i) - X(i-1)의 과정을 통해 구간 내  Pair의 값을 계산할 수 있었다.

  • 랜덤한 구간별로 점진적 Pair 삭제

구간 내에 포함된 Pair의 값을 구했으니, Section별로 포함된 Pair들의 숫자만큼 반복문을 통해 삭제하는 과정을 수행하였다. 삭제의 과정은 rem() 함수로서 구현하였는데, 해당 함수는 나머지 연산을 하는 함수로서, 특정 변수에 나누어 떨어지는 index의 Pair만 남기고 나머지는 삭제하는 연산을 수행하였다.

for i= 1:1:section+1 %%section 별로 나눠서 반복문   
	// n = 전체 Pair 수
    if i == 1
        pair_n(i) = n-sect(1); %각 구간별 pair 개수 
    else
        pair_n(i) = sect(i-1) - sect(i);
    end
    
    if pair_n(i) <10 //구간 내 Pair의 수가 10개 미만이면 inx = 10
       inx = 10; 
    end
    for j = co : 1 : co+pair_n(i) %구간 속 pair들 증가시키며 반복 
    
            if floor(rem(j, inx))~=0 %해당 부분을 변화시켜 구간 별 제거량 변화
               x_x(n+1-j) = 0;
               y_y(n+1-j) = 0;
            end
   
    end
    
    if inx > 10
       inx = 2; 
    end
    
    inx = inx+add_e;	//Pair 제거량 점진적 변화
    co = co+pair_n(i);	//해당하는 구간의 Pair의 수로 변경
    
end

위와 같이 코드를 작성하여 진행하였고 이의 결과로는 다음과 같다.

 

속도정보가 포함된 데이터

 

#마치며

현재까지 구현된 데이터는, 사람이 그린 것과 같은 Data를 구현하고 검사를 진행할 때 환자에게서 나타나는 그리기 속도의 변화까지 구현하였다. 하지만 해당 데이터를 사용하여 논문을 작성하는 데 있어서 비교군으로서 문제점이 발생한다. Base Line으로부터 Error를 발생시켜 Raw data를 도출하는 형식이 기존 캡스톤 연구에서 발명한 ED 측정방법의 방식과 동일하여, 같은 방식으로 구해진 data를 통해 발명한 ED 측정 방법의 정확도를 표현하는 것이 맞지 않다는 것이다. 따라서 다음 포스팅에서는 해당 Error가 첨가된 데이터를 Base Line과 동일한 각도 상에서 이동하며 설정하는 것이 아닌, 독립된 방법으로 구현하는 방법에 대해 논의할 것이다.

728x90

'Capstone' 카테고리의 다른 글

Data apply  (0) 2021.12.20
Remake  (0) 2021.12.20
Make new data sample  (0) 2021.10.27
Way of Modeling  (0) 2021.10.17
데이터 모델링  (0) 2021.10.12