2013-08-18 2 views
0

길이가 12769 인 오디오 신호가 있습니다. 1024 샘플의 작은 창으로 분할하여 STFT를 수행하려고합니다. 481 점이 남아있는 동안 정확한 12 개의 창을 얻을 수 있습니다. 1024 샘플을 만들기 위해 543 (1024 - 481) 점을 더 필요로하기 때문에 제로 패드에 다음 코드를 사용했습니다. a 오디오 파일입니다MATLAB에서 신호를 0으로 채우기

f = [a zeros(1,542)]; 

. 그러나 오류가 발생합니다.

??? 오류 사용 ==> horzcat

CAT 인수의 차원이 일관되지 않습니다.

어떻게 이것을 극복 할 수 있습니까?

답변

1

벡터 a은 열 벡터이며 행 벡터 zeros(1,542)과 연결할 수 없습니다. 대신 zeros(542,1)을 사용하십시오. 하지만, 단지 사용하는 것이 훨씬 쉽다

f = a; 
f(1024*ceil(end/1024)) = 0; 

은 열 또는 행 배열되는 독립적 인 제로 패드 소자 1024 벡터 업되며, MATLAB.

+0

를 사용하여 추가로 543 개 제로 샘플을 추가 할 수 있습니다 에이; f (1024) = 0; a의 길이는 여전히 12769로 동일합니다. 13312로 변경하면 안됩니다. – user2482542

+0

'f = a;'f (길이 (a) +542) = 0;'이어야합니다. 더 쉬워? 나는 그렇게 생각하지 않는다. 빨리? 아마도. 읽고 이해하기가 더 힘듭니다. 명확히. – horchler

+0

@ user2482542 문제를 해결했습니다. 이제 1024의 다음 배수로 패드를 제로화하십시오. –

-1

= 당신은

Total_Samples = length(a); 
for i=1 : Total_Samples-481 
    a_new[i] = a[i]; 

를 사용하여 초과 481 개 샘플을 제거 할 수 있습니다 또는 당신은 당신이 F 언급 한 코드를 사용하는 경우

Total_Samples = length(a); 
for i=Total_Samples+1 : Total_Samples+543 
    a[i] = 0 ; 
+0

Ok. 마지막 라인은 나머지 543 포인트에 대해 0이 추가된다는 것을 의미합니까 ?? 왜냐하면 당신은 0에 대해 언급하지 않았기 때문에, 궁금합니다. – user2482542

+0

죄송합니다. 코드를 편집했습니다. 이제 12770 번째 샘플에서 543 개의 0이 추가되었습니다. 따라서 12770 ~ 13312 개의 샘플은 0입니다. – user2693994

+0

확인. 고마워요 :) – user2482542

관련 문제