Different results using poctave and octaveFilter while obtaining a 1/3-octave rms pressure over frequency

조회 수: 2 (최근 30일)
I'm aiming at obtaining a 1/3 octave band frequency signal for specific centre frequencies. I want to use Matlab's octaveFilter functionality but my results differ from using poctave with the same signals. How to get the same results?
Fs = 48000; % Sampling rate
t = 0:1/Fs:1-1/Fs; % Time vector of 1 second
f = 1000; % Frequency of signal
dpres = 1.415*sin(2*pi*f*t); % Signal in [Pa]
figure()
[p,cf] = poctave(dpres,Fs,'FrequencyLimits',[3 5000],'BandsPerOctave',3);
semilogx(cf,p,'ro-' )
frCen = cf;
[Spl,frCen] = CompOctSplFreq(dpres,frCen)
figure()
semilogx(frCen,Spl,'ro-')
title('1/3-Octave Filtered SPL over Frequency')
xlabel('Center Frequency of Octave Band Filter [Hz]')
ylabel('SPL [dB]')
% Plot delta
figure();
plot(p-Spl')
function [Spl,frCen] = CompOctSplFreq(dpres,frCen)
% Reads singal in pressure over time
freqNum = length(frCen);
Fs = length(dpres);
% Setting up the 1/3-octave filters for all center frequencies
for f = 1:freqNum
octaveFilterBank{f} = octaveFilter(frCen(f),'1/3 octave','SampleRate',Fs,'FilterOrder',12);
% Filtering the signal with the corresponding filters
dpresFiltered(:,f) = octaveFilterBank{f}(dpres');
% Getting the average for each filter frequency band
drms(f) = sqrt(sum(dpresFiltered(:,f).^2)/length(dpresFiltered(:,f)));
end
% Converting the root mean square pressure to SPL
pRef = 20e-06; % Reference pressure
% Spl = 20*log10(drms/pRef);
% For testing
Spl = drms;
end

답변 (1개)

Mark Thompson
Mark Thompson 2024년 1월 8일
By default, poctave() utilises a filter order of 6. Your use of octaveFilter() specifies a filter order of 12. I think what you are seeing is slight differences in the BPFs used by each different octave filter function. Have you been able to resolve this issue, I'm also quite interested...

카테고리

Help CenterFile Exchange에서 Octave에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by