NFFT = 4096*4;
NOVERLAP = round(0.75*NFFT);
w = hanning(NFFT);
spectrogram_dB_scale = 80;
option_w = 0;
[data,head] = readclm('Data.txt',2,1);
signal = data(:,1);
samples = length(signal);
Fs = 48000 ;
[sensor_spectrum, freq] = pwelch(signal,w,NOVERLAP,NFFT,Fs);
sensor_spectrum_dB = 20*log10(sensor_spectrum);
if option_w == 1
pondA_dB = pondA_function(freq);
sensor_spectrum_dB = sensor_spectrum_dB+pondA_dB;
my_ylabel = ('Amplitude (dB (A))');
else
my_ylabel = ('Amplitude (dB (L))');
end
figure(1),semilogx(freq,sensor_spectrum_dB);grid
title(['Averaged FFT Spectrum / Fs = ' num2str(Fs) ' Hz / Delta f = ' num2str(freq(2)-freq(1)) ' Hz ']);
xlabel('Frequency (Hz)');ylabel(my_ylabel);
[sg,fsg,tsg] = specgram(signal,NFFT,Fs,w,NOVERLAP);
sg_dBpeak = 20*log10(abs(sg))+20*log10(2/length(fsg));
if option_w == 1
pondA_dB = pondA_function(fsg);
sg_dBpeak = sg_dBpeak+(pondA_dB*ones(1,size(sg_dBpeak,2)));
my_title = ('Spectrogram (dB (A))');
else
my_title = ('Spectrogram (dB (L))');
end
min_disp_dB = round(max(max(sg_dBpeak))) - spectrogram_dB_scale;
sg_dBpeak(sg_dBpeak<min_disp_dB) = min_disp_dB;
figure(2);
imagesc(tsg,fsg,sg_dBpeak);colormap('jet');
axis('xy');colorbar('vert');grid
title([my_title ' / Fs = ' num2str(Fs) ' Hz / Delta f = ' num2str(fsg(2)-fsg(1)) ' Hz ']);
xlabel('Time (s)');ylabel('Frequency (Hz)');
function pondA_dB = pondA_function(f)
n = ((12200^2*f.^4)./((f.^2+20.6^2).*(f.^2+12200^2).*sqrt(f.^2+107.7^2).*sqrt(f.^2+737.9^2)));
r = ((12200^2*1000.^4)./((1000.^2+20.6^2).*(1000.^2+12200^2).*sqrt(1000.^2+107.7^2).*sqrt(1000.^2+737.9^2))) * ones(size(f));
pondA = n./r;
pondA_dB = 20*log10(pondA(:));
end
function [outdata,head] = readclm(filename,nclm,skip,formt)
formt_dflt = '%g';
addn = nan;
if nargin<1, error(' File name is undefined'); end
if nargin<4, formt = formt_dflt; end
if nargin<3, skip = 0; end
if nargin<2, nclm = 0; end
if isempty(nclm), nclm = 0; end
if isempty(skip), skip = 0; end
[fid,msg] = fopen(filename);
if fid<0, disp(msg), return, end
is_head = 1;
jl = 0;
head = ' ';
while is_head
s = fgets(fid);
jl = jl+1;
is_skip = jl<=skip;
is_skip = jl<=skip | s(1)=='%';
out1 = sscanf(s,formt);
is_head = isempty(out1) | is_skip;
if is_head & ~is_skip
head = str2mat(head,s(1:length(s)-1)); end
end
head = head(2:size(head,1),:);
out1 = out1(:)';
l1 = length(out1);
if ~nclm, nclm = l1; end
if l1~=nclm
outdata = fscanf(fid,formt);
lout = length(outdata)+l1;
ncu = ceil(lout/nclm);
lz = nclm*ncu-lout;
outdata = [out1'; outdata(:); ones(lz,1)*addn];
outdata = reshape(outdata,nclm,ncu)';
else
outdata = fscanf(fid,formt,[nclm inf]);
outdata = [out1; outdata'];
end
fclose (fid);
5 Comments
Direct link to this comment
https://in.mathworks.com/matlabcentral/answers/644828-why-do-i-get-too-high-dominant-frequencies-in-fft#comment_1127103
Direct link to this comment
https://in.mathworks.com/matlabcentral/answers/644828-why-do-i-get-too-high-dominant-frequencies-in-fft#comment_1127103
Direct link to this comment
https://in.mathworks.com/matlabcentral/answers/644828-why-do-i-get-too-high-dominant-frequencies-in-fft#comment_1127673
Direct link to this comment
https://in.mathworks.com/matlabcentral/answers/644828-why-do-i-get-too-high-dominant-frequencies-in-fft#comment_1127673
Direct link to this comment
https://in.mathworks.com/matlabcentral/answers/644828-why-do-i-get-too-high-dominant-frequencies-in-fft#comment_1127898
Direct link to this comment
https://in.mathworks.com/matlabcentral/answers/644828-why-do-i-get-too-high-dominant-frequencies-in-fft#comment_1127898
Direct link to this comment
https://in.mathworks.com/matlabcentral/answers/644828-why-do-i-get-too-high-dominant-frequencies-in-fft#comment_1128018
Direct link to this comment
https://in.mathworks.com/matlabcentral/answers/644828-why-do-i-get-too-high-dominant-frequencies-in-fft#comment_1128018
Direct link to this comment
https://in.mathworks.com/matlabcentral/answers/644828-why-do-i-get-too-high-dominant-frequencies-in-fft#comment_1128028
Direct link to this comment
https://in.mathworks.com/matlabcentral/answers/644828-why-do-i-get-too-high-dominant-frequencies-in-fft#comment_1128028
Sign in to comment.