How to find corresponding frequencies after viewing amplitude in descending order?

Illustration
yun-hun-jmai - 2021-03-01T10:34:31+00:00
Question: How to find corresponding frequencies after viewing amplitude in descending order?

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?    

Expert Answer

Profile picture of Prashant Kumar Prashant Kumar answered . 2025-11-20

To view the corresponding frequency values in descending order of amplitude, you can sort the indices of the amplitude values (peak_ft) and use those indices to reorder the corresponding frequency values (peak_fr). This can be done by sorting the indices based on the amplitude and then using those indices to reorder the frequency values.

Here’s how you can do it:


Modified Code to Sort Frequencies Corresponding to Amplitudes:

% Sort amplitude values into descending order and get the corresponding frequency
[DescendAmp, sortIdx] = sort(peak_ft, 'descend');  % Sort amplitudes and get sorting indices

% Reorder the frequencies using the sorted indices
DescendFreq = peak_fr(sortIdx);

% Now DescendAmp contains the sorted amplitudes, and DescendFreq contains the corresponding frequencies
% You can plot the results or display them

% Plot the corresponding frequency vs. amplitude in descending order
figure; 
plot(DescendFreq, DescendAmp, 'o-');
xlabel('Frequency (Hz)');
ylabel('Amplitude');
title('Sorted Frequency vs. Amplitude');
grid on;

Explanation of the Changes:

  1. Sorting Amplitude and Getting Indices:

    • [DescendAmp, sortIdx] = sort(peak_ft, 'descend');
    • This line sorts the amplitude values in descending order and returns the sorting indices sortIdx, which tell you how to reorder the original data.
  2. Reordering the Frequencies:

    • DescendFreq = peak_fr(sortIdx);
    • Using sortIdx, we reorder the frequencies (peak_fr) to match the sorted amplitudes.
  3. Plotting the Results:

    • plot(DescendFreq, DescendAmp, 'o-');
    • This line creates a plot showing the sorted frequencies against their corresponding amplitudes.

Output:

  • DescendAmp: Amplitudes sorted in descending order.
  • DescendFreq: Frequencies corresponding to the sorted amplitudes.

Now, you can directly view the frequencies corresponding to the peaks in descending order of their amplitudes.


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!