How to use findpeaks in the frequency domain?

L
Leonardo · Dec 5, 2020 · 2K views
Question
I'm able to use findpeaks to find out the amplitude and time of each mode but i'm trying to use it to also find frequency, below was my attempt however as I am still very new to this software I was looking for a little help? clear; clc; close all; [audio_file, Fs] = audioread("honours_gun.wav"); audio_file = audio_file(:, 1); select = audio_file; findpeaks(select,Fs,'MinPeakDistance', 0.001); figure(2), semilogx(audio_file), xlabel('Frequency, Hz'), ylabel('magnitude'); I'm able to  plot the frequency with a logarithmic scale and if I could manage to identify the peaks I will have all the information from the sample I need.
Expert Answer
Profile picture of Kshitij Singh
Kshitij Singh PhD Expert
Answered Aug 31, 2026
[audio_file, Fs] = audioread("honours_gun.wav");
L = size(audio_file,1);
Ts = 1/Fs;                                                      % Sampling Interval
Fn = Fs/2;                                                      % Nyquist Frequency
FT_af = fft(audio_file)/L;                                      % Fourier Transform
Fv = linspace(0, 1, fix(L/2)+1)*Fn;                             % Frequency Vector
Iv = 1:numel(Fv);                                               % Index Vector

[PksL,LocsL] = findpeaks(abs(FT_af(Iv,1))*2, 'MinPeakHeight',4E-3);
[PksR,LocsR] = findpeaks(abs(FT_af(Iv,2))*2, 'MinPeakHeight',4E-3);

figure
subplot(2,1,1)
plot(Fv, abs(FT_af(Iv,1))*2)
hold on
plot(Fv(LocsL), PksL, '^r', 'MarkerFaceColor','r')
hold off
ylabel('Amplitude')
title('Left Channel')
subplot(2,1,2)
plot(Fv, abs(FT_af(Iv,2))*2)
hold on
plot(Fv(LocsR), PksR, '^r', 'MarkerFaceColor','r')
hold off
xlabel('Frequency (Hz)')
ylabel('Amplitude')
title('Left Channel')
The frequency peaks are in ‘Fv(LocsL)’ and ‘Fv(LocsR)’ respectively. The peak values for each correspond to those.
Experiment (especially with the findpeaks name-value pairs) to get the result you want.
100% Run Guarantee 3-Hour Fast-Track Delivery

Need a Custom Version or Complete Simulation for This Problem?

Our 500+ PhD engineers build, debug, and optimize working MATLAB scripts and Simulink (.slx) models tailored to your exact assignment rubrics with zero plagiarism.

Tested on MATLAB R2024b / R2026a
Turnitin 0% Plagiarism Report
Free 7-Day Revisions Guarantee
Have a different question? Ask here

Get a Free Consultation or a Sample Assignment Review!