2 svar
91 visningar
AstridG är nöjd med hjälpen
AstridG 66
Postad: 26 nov 2020 18:37 Redigerad: 27 nov 2020 07:04

psd i mtalab med for loop

NFFT = 256;
WINDOW = hanning(NFFT, 'periodic');

Avg_Acc = [];
for ii = 1:round(numel(Acc)/NFFT)
    Avg_Acc(ii) = mean(Acc(1 + .5*NFFT*(ii-1): NFFT + .5*NFFT*(ii-1)).*WINDOW);
end

Avg_Acc_FFT = fft(Avg_Acc)/numel(Avg_Acc);
F = numel(Acc)/ii;

figure
plot(abs(Avg_Acc_FFT))
title('FFT')

F = Avg_Acc_FFT*numel(Avg_Acc);
%To proof Parseval
LHS = sum(abs(Avg_Acc.*Avg_Acc));
RHS = sum(abs(F.*F))/numel(Avg_Acc);
Ca = mean(WINDOW);%mean of window
Cb = 3/2;
delta_f = fs/NFFT;
PSD = (2*(abs(Avg_Acc_FFT)).^2)/((Ca^2)*Cb*delta_f);

Hej

Jag behöver hjälp med att bygga en for loop för PSD power spectral density, jag måste göra i manuellt istället för använda en funktion som redan finns i matlab. Vector acceleration Acc är given från en fil. Jag måste göra en PSD matrix med averaging.

Flyttade tråden från Fysik/Universitet /Smaragdalena, moderator

utbildadgangster 46 – Fd. Medlem
Postad: 26 nov 2020 21:06 Redigerad: 26 nov 2020 21:08

Varför har du lagt det som Fysik tråd? 

DU har gjort ett fel vid "Cb = 3/2;"

utbildadgangster 46 – Fd. Medlem
Postad: 26 nov 2020 21:09 Redigerad: 26 nov 2020 21:13

Vart är initialvektorerna? och vilket mönster är det du vill skapa loop för? 

¨

Svara Avbryt
Close