Forum >> Programmazione Python >> Calcolo scientifico >> signal.welch

Pagina: 1

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^8);

[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)

Allegati


Pagina: 1



Esegui il login per scrivere una risposta.