Profilo di Hammiah90

Nome Hammiah90
Indirizzo email n/a
Messaggi1
  • 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^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)