Good day. Below I have a piece of code written.
%% Peak detection Part
% In this part, we have defined a threshold value. So, all peaks above
% threshold value will be detected.
temp_fft = data_filt_ft; % Normalize the FFT
temp_fft = temp_fft/max(temp_fft); % threshold
th = 0.02; % i.e. 1% of maximum amplitude
temp_fft(temp_fft < th) = 0; %you can skip this step by commenting this.
% Plot FFT after thresholding
figure; plot(fr, temp_fft);xlabel('Frequency(Hz)'); ylabel('Amplitude');grid on; % find peaks of the remaining data
[peak_ft, peak_loc] = findpeaks(temp_fft); % frequency corresponding to peak
[peak_fr] = fr(peak_loc);%Sort amplitude values into descending order
DescendAmp = sort(peak_ft,'descend'); % this fuction returns the fourier transform of the signal
function [ft, f] = fr_t(x, Fs)L = length(x);% NFFT = 2^nextpow2(L); % Next power of 2 from length of y
NFFT = L; X = fft(x,NFFT)/NFFT;f = Fs/2*linspace(0,1,floor(NFFT/2+1)); ft = abs(X(1:floor(NFFT/2+1)));% ft = 20*log10(ft);
% plot(f,ft);
end
I am able to sort the amplitudes into descending order but I am unable to view the corresponding frequency values in that order. How can I view the corresponding frequency values in that order?
Best Answer