मेरा प्रश्न निम्नलिखित है:
मेरे पास एक स्पेक्ट्रोग्राम (scipy.fftpack.fft
) के लिए आवश्यक सभी मान हैं। मैं अजगर में एक 3D स्पेक्ट्रोग्राम बनाना चाहूंगा।
MATLAB में यह एक बहुत ही सरल कार्य है, जबकि अजगर में यह बहुत अधिक जटिल लगता है। मैंने मायावी, 3डी प्लॉटिंग मैटप्लोटलिब की कोशिश की लेकिन मैं ऐसा करने में कामयाब नहीं हुआ।
धन्यवाद
मेरा कोड:
import numpy as np
import pandas as pd
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.collections import PolyCollection
fs = 11240.
t = 10
time = np.arange(fs*t) / fs
frequency = 1000.
mysignal = np.sin(2.0 * np.pi * frequency * time)
nperseg = 2**14
noverlap = 2**13
f, t, Sxx = signal.spectrogram(mysignal, fs, nperseg=nperseg,noverlap=noverlap)
myfilter = (f>800) & (f<1200)
fig,ax = plt.subplots()
plt.pcolormesh(t, f[myfilter], 10*np.log10(Sxx[myfilter, :]), cmap='jet')
plt.show()
fig = plt.figure()
ax = fig.gca(projection='3d')
x = []
y = []
for counter,i in enumerate(f):
x.append(np.array([i for k in t]))
y.append(t)
ax.plot_surface(np.array(x), np.array(y), 10.0*np.log10(Sxx), cmap=cm.coolwarm)
plt.show()
इसी तरह का अनुत्तरित प्रश्न: एक स्पेक्ट्रोग्राम को 3डी प्लॉट में कैसे बदलें। अजगर
मैटलैब के फिगर की तरह अजगर में वांछित प्लॉट (यहां अंतिम प्लॉट: https://www। mathworks.com/help/signal/ref/spectrogram.html)
1 उत्तर
आपको बस अपने सरणियों को सही आकार में लाने की आवश्यकता है:
fs = 11240.
t = 10
time = np.arange(fs*t) / fs
frequency = 1000.
mysignal = np.sin(2.0 * np.pi * frequency * time)
nperseg = 2**14
noverlap = 2**13
f, t, Sxx = signal.spectrogram(mysignal, fs, nperseg=nperseg,noverlap=noverlap)
myfilter = (f>800) & (f<1200)
f = f[myfilter]
Sxx = Sxx[myfilter, ...]
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_surface(f[:, None], t[None, :], 10.0*np.log10(Sxx), cmap=cm.coolwarm)
plt.show()
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।