2013-09-30 3 views
0

데이터 세트에서 FFT를 수행했으며 주파수와 진폭 값이 있다고 가정 해보십시오. 각 FFT 블록에서 최대 진폭을 찾고 싶습니다. 최대 진폭의 0.4 배 이상인 점들의 주파수와 진폭을 찾고 배열로 저장해야합니다. 어떻게해야합니까? 은 내가 빈 매트릭스가 계속하여 다음과 같은 방법 .... 배열 나쁜MATLAB의 배열에 값을 저장하는 방법

% the code after FFT 
peak_points = []; 

    fmin = 60; 
    fmax = 1000; 
    region_of_interest = fmax>f & f>fmin; 
    froi = f(region_of_interest); 

    [p_max,loc] = max(seg_fft2(region_of_interest)); 

    p_max; 
    fpeaks = froi(loc); 

    [points, locatn] = findpeaks(seg_fft2(region_of_interest)); 

    if points > 0.4*p_max 
     peak_points = [peak_points ; points locatn] 
    end 

임 .. 시도 그래서 나는 이것을 알아낼 기운 다. 다른 사람의 도움을 주셔서 감사합니다. 미리 감사드립니다 ...

답변

1

관심 영역 논리 배열이나 froi에서 seg_ffr2를 수행 하시겠습니까?

아니면 포인트는 벡터이고, 당신은해야합니다

aboveMax = points > 0.4*p_max; 
if any(aboveMax) 
     peak_points = [peak_points ; points(aboveMax) locatn(aboveMax)] 
end 
+0

가 그럼 난 60 Hz에서 100 Hz에서 사이의 지역을 고려하고 그 지역에서 최대를 찾을 필요가있다. 'region_of_interest = fmax> f & f> fmin;'행은 해당 지역을 정의하므로 seg_fft2가 완료됩니다. – user2482542

+0

감사합니다. 올바른 진폭을 탐지하는 데는 문제가 없습니다. 그러나'locatn (위의 Max)는 나에게 지점의 빈도를주지 않습니다. 빈도 값을 얻으려면 어떻게해야합니까 ?? – user2482542

관련 문제