2015-01-28 3 views
0

나는 아래의 이미지 정보에 따라 MATLAB에서 사용자 정의 자기 상관 함수를 만들려고 노력하고 있어요 :사용자 정의 자기 상관 중복 슬라이딩 윈도우

enter image description here

기능이 작동하지만 난 인덱스 매트릭스 크기를 초과 오류가 발생 , 수학적으로 그것은 라이트이지만 프로그래밍에서 나는 뭔가를 놓치고 있습니까? 내 코드는 다음과 같습니다.

close all; clear all; clc; 

[x,fs]=audioread('c1.wav'); 
N=length(x); %// length of signal 
n1=128; %// length of window 
win_num=floor(N/n1); %// number of windows 
m=1:n1; 
for l=1:n1/2:win_num %// 50% overlapping - 64 samples for a 128 window 
    for n=1:N-m 
     cmax(n)=max(sum(x(n+m)*conj(x(n)))); 
    end 
end 

감사합니다.

+0

어디서 오류가 발생합니까? 어느 선 에서요? –

+0

색인이 행렬 크기를 초과합니다. acf_08의 오류 (행 11) cmax (n) = max (sum (x (n + m) * conj (x (n))))); –

+0

'x '의 길이는 얼마입니까? 최소한의 실례를 게시 할 수 있습니까? 우리가 코드를 실행할 수 있도록 사용하는 특성의 임의의'x'를 생성하십시오. –

답변

0

나는 for n=1:N-m을 할 때 for n=1:N-max(m) (또는 for n=N-m(end))을하고 싶다고 가정하고 있습니다.

첫 번째 작업을 수행하는 경우 N-m은 하나의 값이 아닌 배열을 반환합니다. m은 배열입니다!

+0

예 이제 오류없이 작동합니다. n = 1 : N-max (m)을 추가했습니다. –

관련 문제