% set sample rate and time window
fsamp = 44100 ; % sampling rate = samples per second
tsamp = 1.4861 / 16 ; % sampling time in s bei 2^16
t = 0:1/fsamp:tsamp; % time steps in s for each sample point
recObj = audiorecorder(fsamp,16,1);
recordblocking(recObj, tsamp+1/fsamp);
y = getaudiodata(recObj)';
subplot(2,1,1); % 1. plot plot(t,y)% plot the signal
% compute FFT as DFT
l = size(y) ; % size of amplitude vector
n = 2^nextpow2(l(2)); % next power of 2 > size of y
z = fft(y,n) / l(2) ; % compute coplex FFT as DFT
zz = 2* abs(z) ; % get absolute normelised values
f = fsamp * 1/2 * linspace(0,1,n/2+1); % frequency steps
subplot(2,1,2); % 2. plot
A = zz(1:n/2+1);
plot(f,A) % find max peak in spectrum, annotaion [pks,locs,ww,p] = findpeaks(A,'MinPeakHeight',0.35,'Annotate','extents');
% compuet maximum frequency
f(locs(1));
Mein Problem ist, dass er mir die Peaks nicht anzeigt, so wie auf diesem Bild.
Wäre euch dankbar, wenn ihr mir helfen könntet.
edit winkow: bitte die code umgebung benutzen
Warning: Invalid MinPeakHeight. There are no data points greater
than MinPeakHeight.
> In findpeaks>removePeaksBelowMinPeakHeight (line373)
In findpeaks(line139)
In test_forum_2265 (line30)
Index exceeds matrix dimensions.
doofe Frage, aber was soll ich machen? Mein Code ist defintiv richtig, da ich die max. Frequenz angezeigt und berechnet bekomme. Ich möchte aber gerne die Darstellung, wie sie aud dem Bild ist.
Gut, wahrscheinlich für diese Fragestellung ist das mit der letzten Zeile unwichtig.
Ich sehe also ein Signal oben und eine FFT unten, die allerdings ungünstig dargestellt wird. Ist es das?
FINDPEAKS läuft ja erst danach und das Ergebnis erzeugt ja keinen visuellen Output der Peaks anzeigen würde, somit kann ich da kein Problem im Vergleich zum Referenzbild analysieren.
% set sample rate and time window
fsamp = 44100 ; % sampling rate = samples per second
tsamp = 1.4861 / 16 ; % sampling time in s bei 2^16
t = 0:1/fsamp:tsamp; % time steps in s for each sample point
recObj = audiorecorder(fsamp,16,1);
recordblocking(recObj, tsamp+1/fsamp);
y = getaudiodata(recObj)';
subplot(2,1,1); % 1. plot plot(t,y)% plot the signal
% compute FFT as DFT
l = size(y) ; % size of amplitude vector
n = 2^nextpow2(l(2)); % next power of 2 > size of y
z = fft(y,n) / l(2) ; % compute coplex FFT as DFT
zz = 2* abs(z) ; % get absolute normelised values
f = fsamp * 1/2 * linspace(0,1,n/2+1); % frequency steps
subplot(2,1,2); % 2. plot
A = zz(1:n/2+1);
plot(f,A) % find max peak in spectrum, annotaion findpeaks(A,f,'Annotate','extents','WidthReference','halfheight');
[pks,locs,ww,p] = findpeaks(A,f,'Annotate','extents','WidthReference','halfheight');
% compuet maximum frequency
locs(1)
Allerdings stimmt die Skalierung deiner Amplitude nicht (siehe folgendes Skript: FFT: Umfassendes Beispiel) und eine Darstellung in dB der y-Achse wäre wohl auch sinnvoller.
vielen, vielen lieben Dank !!! DAS nenne ich wirklich eine tolle Hilfe.
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.