Hammiah90
Profilo di
Nome | Hammiah90 |
---|---|
Indirizzo email | n/a |
Messaggi | 1 |
-
- 2016-08-05 09:58:26
- signal.welch
- Forum >> Programmazione Python >> Calcolo scientifico
- Ciao,
sto trascrivendo un semplice codice che calcola la PSD di un segnale scritto in Matlab, in Python. Per il calcolo della PSD utilizzo il comando welch incluso in scipy.signal. Il problema è che il risultato della psd che mi tira fuori è ndarray, mentre le frequenze associate no (ovviamente!). Se vado a plottare mi dice che "x e y must have the same first dimension". Sbaglio qualcosa?
Allego i due codici, quello di partenza scritto in Matlab(funzionante) e quello che sto scrivendo in Python.
Matlab
% tic
load('Track_147.mat')
P=p/0.001614;
P=P(1:100000);
Fs=150000;
x=length(P);
winlenght=(2^;
[Pxx,fxx]=pwelch(P,winlenght,winlenght/2,winlenght,Fs);
figure(1)
loglog(fxx,Pxx);
title('PSD')
% toc
Python
import scipy.io
from scipy import signal
import matplotlib.pyplot as plt
import numpy as np
import time
t_iniziale=time.time()
f = scipy.io.loadmat('track_147.mat')
P= f['p']
P=P/0.001614
x=P[0:100000]
fs=15e4
nperseg=256
[fxx,Pxx]=signal.welch(x, fs,window='hanning', nperseg=256 ,noverlap= None, nfft=256, detrend='linear', return_onesided=True, scaling='density')
Px=Pxx[54,:]
plt.semilogy(fxx, Px)
t_finale=time.time()
print "impiegati", str(t_finale-t_iniziale)