问题描述
我希望为我的作业制作简单的代码窗口 DFT,但是,我在格式化 DFT 信号 realX[k]
和 imj[k]
时遇到了问题。这是我的代码如下:
import numpy as np
import matplotlib.pyplot as plt
import random
realX = np.ones(100000)
imjX = np.ones(100000)
magX = np.ones(100000)
A1 = int(input('Amplitude A1: '))
A2 = int(input('Amplitude A2: '))
f1 = int(input('Frequency f1: '))
f2 = int(input('Frequency f2: '))
N = int(input('Number of sequence: '))
fs = int(input('Sampling Frequency:'))
n = np.linspace(0,N,10000).reshape(-1,1)
k = np.linspace(0,N/2,1)
noise = np.random.normal(0,1,1)
xn = A1*np.cos(2*np.pi*f1*n/fs) + A2*np.sin(2*np.pi*f2*n/fs) + noise
print(xn)
print("Window Funtion: \n")
print("1. Rectangular Window (Wrec(n)) \n")
print("2. Tringular(Barlett) Window (Wtri(n)) \n")
print("3. Hanning Window (Whan(n)) \n")
print('4. Hamming Window (Wham(n)) \n')
print('5. Blackman Window (Wblack(n)) \n')
wd = input('Choose Window Funtion: ')
if wd == '1':
def wn(n):
return 1
elif wd == '2':
def wn(n):
return 1-abs((2*n-N)/N)
elif wd == '3':
def wn(n):
return 0.5 - 0.5*np.cos(2*np.pi*n/N)
elif wd == '4':
def wn(n):
return 0.54 - 0.46*np.cos(2*n*np.pi/N)
elif wd == '5':
def wn(n):
return 0.42 - 0.5*np.cos(2*n*np.pi/N) + 0.08*np.cos(4*n*np.pi/N)
else:
print('Invalid Input')
def window(n):
return xn*wn(n)
print(window(n))
for k in range(N):
for n in range(N):
realX[k] += window(n)*np.cos(2*np.pi*k*n/N)
imjX[k] -= window(n)*np.sin(2*np.pi*k*n/N)
for k in range(N):
magX[k] = np.sqrt((realX[k])**2 + (imjX[k])**2)
plt.plot(n/fs,xn)
plt.show()
plt.plot(n/fs,window())
plt.show()
plt.bar(k*fs/N,magX[k],width=0.5)
plt.show()
当我运行这段代码和数据时,我在下面遇到了一些错误。那么如何轻松修复此错误?
TypeError Traceback (most recent call last)
TypeError: only size-1 arrays can be converted to Python scalars
The above exception was the direct cause of the following exception:
ValueError Traceback (most recent call last)
<ipython-input-5-9457d8079e12> in <module>()
49 for k in range(N):
50 for n in range(N):
---> 51 realX[k] += window(n)*np.cos(2*np.pi*k*n/N)
52 imjX[k] -= window(n)*np.sin(2*np.pi*k*n/N)
53
ValueError: setting an array element with a sequence.
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)