嗨,伙计们,我有一些困难,在我的FFT Matlab脚本获得正确的频率。我用鼻窦信号测试了剧本,效果很好。但是,以我的测量信号(放入txt文件,见下文)不能给我正确的频率。在第一幅图中,我正在绘制我的信号,在那里,我用手测量和计算应该频率,即33.333 kHz。
% Parameter
td = 100*4e-6; % Duration of the measurement ( i honestly just put something here)
fs = 250e3; % samplingfrequency
% Frequency to be detected (measured from data in plot)
freq_soll_20 = 1/(7.2e-5 - (4.4e-5 + 4e-5)/2);
% Samples calc
s_20 = readmatrix('fft_cut_20.txt');
t_20 = 0:1/fs:((length(s_20)-1)*1/fs);
%% ---- Triggerdata
figure(1)
subplot(3,1,1);
plot (t_20, s_20)
grid on;
xlabel('Zeit (ms)');
ylabel('ADC LSB');
title('20um');
h_20=fft(s_20).*1/length(s_20);
f_20=1/td*(0:(length(t_20)-1));
subplot(3,1,2);
stem(f_20,abs(h_20));
grid on;
xlim([min(f_20) max(f_20)]);
xlabel('Frequenz (Hz)');
ylabel('Amplitude');
title('Ausgabe des FFTs');
subplot(3,1,3);
f2_20=f_20-round(max(f_20)/2);
stem(f2_20, fftshift(abs(h_20)));
grid on;
xlabel('Frequenz (Hz)');
ylabel('Amplitude');
title(['Ausgabe des FFTs nach sortieren mit FFTSHIFT mit soll frequenz:'...
num2str(freq_soll_20) 'Hz']);数据如下:
11284, 11601, 12033, 12355, 12344, 11985, 11558, 11444, 11807, 12491, 13090, 13199, 12694, 11878, 11290, 11500, 12855我的FFT给我的频率1250*10^4赫兹。我用带有这些参数的窦房车测试了这段代码,它运行得很好:
%Parameter
fs = 250000; % Abtastrate
td = 100*4e-6; % Dauer der Messung
f1 = 30000; % Frequenz
% Samples berechnen
t = 0:(1/fs):td;
s = sin(2.*pi.*f1.*t);我是不是遗漏了什么?
发布于 2021-05-20 00:12:53
正确的频率公式是:
f_20=(0:(length(t_20)-1))*fs/length(t_20);您的公式f_20=1/td*(0:(length(t_20)-1));在td对应于总信号持续时间时是等效的,这是正弦波的情况。对于只有17个样本的其他信号,情况就不一样了,而采样率为250 The的td=100*4e-6对应于100个样本。
https://stackoverflow.com/questions/67581359
复制相似问题