Spectral centroid after FFT

3 次查看(过去 30 天)
Fabian Laumen
Fabian Laumen 2021-2-13
Hey guys,
I have a question about the spectral centroid in connection with the FFT. I have a dataset with a million values of a signal and I have already isolated the window with my burst in this signal. Over this window I have formed a FFT. Now I would like to form the Spectral centroid over this window. Is this generally possible? I honestly don't understand how I have to use the Spectral centroid feature of Matlab.
Actually my question is why the spectralCentroid feature works over the whole signal (1 million values) but not over my window (just 10,000 values)?
This is my code after i loaded my input dataset
%Select area around peak Signal
Signal1 = transpose(Plate1.Untitled);
[Plate1_maxValue, Plate1_indexOfMax] = max(Signal1);
Plate1_index1 = (Plate1_indexOfMax - 1500)
Plate1_index2 = (Plate1_indexOfMax + 8499);
Plate1_Window = Signal1(Plate1_index1 : Plate1_index2);
%FFT parameters
Int = 0.01; %sec
Fs = 1000000; %frequency of my sensor
T = 1/Fs;
L = Int*Fs; %Lenght of my Window
t = (0:L-1)
f = Fs*(0:(L/2))/L;
%FFT Plate 1
Plate1_Spec = fft(Plate1_Window);
Plate1_P2 = abs(Plate1_Spec/L);
Plate1_P1 = Plate1_P2(1:L/2+1);
Plate1_P1(2:end-1) = 2*Plate1_P1(2:end-1);
%This one here works but i need my window
centroid = spectralCentroid(Plate1.Untitled,Fs);
t_1 = linspace(0,size(Plate1.Untitled,1)/Fs,size(centroid,1));
plot(t_1,centroid)
xlabel('Time (s)')
ylabel('Centroid (Hz)')
%This one here dosent work
B = transpose(Plate1_Window);
centroid_2 = spectralCentroid(B,Fs);
t_2 = linspace(0,size(B,1)/Fs,size(B,1));
plot(t_2,centroid_2)
xlabel('Time (s)')
ylabel('Centroid (Hz)')

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Spectral Measurements 的更多信息

产品


版本

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by