【问题标题】:Numpy warning:Casting Complex to real discards imaginary partNumpy 警告:将复数转换为实数丢弃虚数部分
【发布时间】:2013-07-30 22:00:10
【问题描述】:

我正在 Python 中尝试 Matlab 代码

我的代码给出了警告

/usr/lib/python2.7/dist-packages/numpy/core/numeric.py:235:ComplexWarning:将复数转换为实数会丢弃虚部

返回数组(a, dtype, copy=False, order=order)

Python 代码

demod_1_a=mod_noisy*2*cos((2*pi*Fc*t)+phi)

N=10
Fc=40
Fs=1600
d=firwin(numtaps=N,cutoff=40,nyq=Fs/2)
print(len(d))
Hd=lfilter( d, 1.0, demod_1_a)
print(len(Hd))
y2=(convolve(Hd,raised))/Convfac
print(len(y2))
y2=y2[(sa/2)-1:-sa/2]
print(len(y2))
demod_3_a=y2[(sa/2)-1::sa]
print(len(demod_3_a))

demod_1_b=-1*mod_noisy*2*sin((2*pi*Fc*t)+phi)

Hd2=lfilter(d,1.0,demod_1_b)

y3=(convolve(Hd2,raised))/Convfac

y3=y3[(sa/2)-1:-sa/2]

demod_3_b=y3[(sa/2)-1::sa]

#########3333
#Demod

demod=demod_3_a+(1j)*demod_3_b
print((demod))
plot(demod,'wo')
show() 

这段代码给了我结果但不是我想要的结果。我想问一下这个警告将如何影响我的代码? 以及摆脱此警告的解决方案是什么。请帮助

【问题讨论】:

  • 你的变量名看不懂,有一半的变量是在别处定义的。你到底想做什么?

标签: python matlab numpy


【解决方案1】:

警告来自 plot 命令——我很确定。 “情节”意味着采用一维真实数组并将其放在屏幕上。当它看到一个复数数组时,它会尽其所能,即丢弃虚部并绘制实部。

您可能想尝试类似的方法

plot(numpy.real(demod),'wo')
plot(numpy.imag(demod),'wo')

如果您想同时查看这两个部分。

【讨论】:

  • 是的,当我使用 plot 命令时,你是绝对正确的,它给了我错误
猜你喜欢
  • 2021-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-12
  • 1970-01-01
相关资源
最近更新 更多