How to obtain the same output in spectral descriptors, using frequency and time domain inputs?
조회 수: 2 (최근 30일)
이전 댓글 표시
All matlab spectral descriptors as spectralSlope, spectralKurtosis,ect have the choice to use a time domain or a frequency domain input, but I'm unable the get the same (even aproximadetly) result, does anyone knows how to solve this?
Example:
clear;
%load an audio
[x,fs]=audioread('example.wav');
%windowing data
win=round(0.025890625*fs);
over=round(0.01875*fs); % 72%
%Obtain the spectral data
[s, f, t]=spectrogram(...
x,...
hamming(win),...
over,...
win,fs,'yaxis');
slope_normal(:,1)=spectralSlope(x,fs, Window=hamming(win),OverlapLength=over);
slope_spec(:,1)=spectralSlope(s,f);
figure;plot(slope_normal);hold on;plot(slope_sub);
댓글 수: 0
채택된 답변
Brian Hemmat
2023년 6월 16일
%% Compare Time-Domain and Frequency-Domain Inputs
[x,fs] = audioread('Counting-16-44p1-mono-15secs.wav');
% Define window and overlap length
windowLength = round(0.025890625*fs);
overlapLength = round(0.01875*fs);
win = hamming(windowLength);
fftLength = windowLength;
% Calculate the power spectrum the same was as the spectral descriptors
[~,f,~,ps] = spectrogram( ...
x, ...
win, ...
overlapLength, ...
fftLength,fs,'yaxis','power','onesided');
% Slope using time domain input
slope_timeDomainInput = spectralSlope(x,fs, ...
Window=win,OverlapLength=overlapLength,SpectrumType='power');
% Slope using frequency domain input
slope_frequencyDomainInput = spectralSlope(ps,f);
figure(1)
plot(slope_timeDomainInput,'ro');hold on
plot(slope_frequencyDomainInput,'b*');hold off
title("Error = " +rms(slope_timeDomainInput - slope_frequencyDomainInput))
댓글 수: 0
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Simulation, Tuning, and Visualization에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!