Я использую функцию, которая вычисляет матрицу, которую можно использовать для построения спектрограммы сигнала. Теперь я должен найти энергию на определенных частотах сигнала (от -50 до 50 Гц), но я не уверен, как получить доступ только к столбцам моей матрицы спектрограммы, которые соответствуют правильным частотам. Честно говоря, я понимаю, что строки S соответствуют времени, но я не уверен, что представляют столбцы S.
function S = spectrogram_proj(x,L,NFFT,step,Fs)
N=length(x);
K=fix((N-L+step)/step);
w=hanning(L);
time=(1:L);
N2=NFFT/2+1;
S=zeros(K,N2);
for k=1:K
xw=x(time).*w;
X=fft(xw,NFFT);
X1=X(1:N2);
S(k,1:N2)=X1.*conj(X1);
time=time+step;
end
end
[y,Fs] = audioread('FINS.wav');
Fs;
x=y;
L = 200;
NFFT = nextpow2(L);
step = 1;
S = spectrogram_proj(x,L,NFFT,step,Fs);
avg_f = mean(S);
S_denoise = max(0,S-repmat(avg_f,size(S,1),1));
Мне дали следующие отношения о том, как найти энергию, и я пыталсяиспользуйте приведенный ниже код, но он не кажется правильным.
for k=1:2399801
energy = sum(S_denoise(k, 3 ));
end
В S_denoise есть 23990801 строк, и я думаю, что в 3-м столбце содержатся частоты от -50 до 50 Гц. Не уверен, что я просто предположил. Спасибо за помощь !!