2013-05-30 5 views
-1

나는 2 개의 근육에 대해 3 개의 EMG 녹음을 가지고 있으며 샘플링 속도는 1000Hz입니다. 즉, EMG 데이터의 3 개 행렬을가집니다. 각각 2 행 (2 근육)입니다.EMG 처리에서 MATLAB을 사용하여 보간

그러나 각각의 샘플 (열) 수가 동일하지 않습니다. 첫 번째 샘플은 2600 개의 샘플을 가지고 두 번째 샘플은 2500 개의 샘플을 가지며 세 번째 샘플은 2550 개의 샘플을가집니다.

같은 길이의 행과 열을 동일한 수의 행렬 3 개를 얻고 싶습니다. 나는 더 큰 것들을 자르고 단지 2500 개의 칼럼을 사용하는 것은 어리석은 것이라고 생각합니다. 그러나 내가 그렇게하고 싶다면 내가 그 시작이나 끝에서 잘라야할지 모르겠다.

MATLAB에서 데이터를 보간하여 3 x 2600 크기의 3 행렬을 얻는 방법이 있습니까?

3 개의 행렬은 모두 같은 움직임에 속하므로 샘플을 일치시키고 싶습니다.

+0

시작 코드가 있습니까? – Huguenot

답변

0

이 상황에서 interp1을 사용하는 것이 가장 좋습니다. 이렇게하면 x 축의 임의 위치에서 샘플링 할 수 있도록 점 사이의 보간이 수행됩니다.

http://www.mathworks.com/help/matlab/ref/interp1.html

나는 어떤 임의의 샘플 데이터 sample1, sample2sample3을 가지고 다음 예제를 가지고있다. 이 변수의 길이는 각각 2600, 2500 및 2550입니다.

sample1 = exp(2*linspace(0,1,2600)+rand(1, 2600)); 
sample2 = exp(linspace(0,1,2500)+rand(1, 2500)); 
sample3 = exp(3*linspace(0,1,2550)+rand(1, 2550)); 

I 당신은 다음 코드를 사용하여 데이터를 보간 할 수

desiredlength = 2500; 

원하는 길이 (나는 당신의 짧은 샘플 크기에 해당하는 길이를 사용하고)있다 (기본값은주의 선형 보간)

adjusted = zeros(3, desiredlength); 

adjusted(1, :) = interp1(linspace(0,1,length(sample1)), sample1, linspace(0,1,desiredlength)); 
adjusted(2, :) = interp1(linspace(0,1,length(sample2)), sample2, linspace(0,1,desiredlength)); 
adjusted(3, :) = interp1(linspace(0,1,length(sample3)), sample3, linspace(0,1,desiredlength)); 

plot(adjusted') 

enter image description here

linspace(a, b, n) 당신에게 ab 사이 n 점의 벡터를 제공하는 기능이며, sample1 위해 나는 linspace(0, 1, 2600)에서 난이 도움이되기를 바랍니다 linspace(0, 1, 2500)

로 변화하고있다.