Wykres czas-częstość

1

Mając sygnał X chcę narysować kolorową mapkę, gdzie na osi x odzwierciedlę przebieg czasowy sygnału X, a na osi y jego częstotliwości występujące dla danego czasu. Powiedzmy, że cuś takiego:

python time frequency.png

Macie jakieś pomysły?

0

Na chwilę obecną skorzystałem z map czas-częstość generowanych w matlabie, bo potrzebowałem tego "na już". Jednak niedługo powinienem zamieścić również rozwiązanie dla Pythona. W każdym razie w matlabie wygląda to np. tak:

frequencies = 0:.1:100;
window = 64;
NFFT = 60;

figure;
subplot(3, 1, 1);
gca.XTick = -100:1000:1;
spectrogram(signal, window, NFFT, frequencies, 1E3, 'yaxis'); 
axis xy; axis tight; colormap(jet); view(0,90);
xlabel('Time');
ylabel('Frequency (Hz)');

subplot(3, 1, 2);
plot(signal);
xlabel('Time (ms)');
ylabel('Amplitude (uV)');

subplot(3, 1, 3);
signal_fft = fft(signal);
signal_fft_abs = abs(signal_fft);
plot(signal_fft_abs);
xlim([0, 100])
xlabel('Frequency (Hz)');
ylabel('Amplitude (uV)');

fig1.jpg

Jeszcze muszę tylko pozmieniać "tiki" dla skali x w subplot(3, 1, 1) i subplot(3, 1, 2), aby oba ploty miały taką samą skalę czasu.

1

nie programuję w pythonie ale to co musisz zrobić to zaimplementować sobie STFT żeby zrobić spectogram.

później tylko oknować sesnownie przebieg i liczyć. mi wystarczyły 2 słowa w google żeby znaleźć:
http://stackoverflow.com/ques[...]ible-stft-and-istft-in-python
https://pypi.python.org/pypi/stft/0.4
http://austringer.net/wp/inde[...]12/03/31/python-and-the-stft/

pozdro

0

Cholibka, nie wiem jakim cudem na to nie wpadłem podczas poszukiwań. Bardzo dziękuję!

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0