- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正致力于将一些 C 代码翻译成 Python。此代码用于帮助识别由射电天文学中使用的 CLEAN 算法引起的错误。为了进行此分析,必须在特定像素值(由 ANT_pix 给出)处找到强度图、Q 斯托克斯图和 U 斯托克斯图的傅立叶变换值。这些 map 只是 257*257 数组。
下面的代码用 C 运行需要几秒钟,但用 Python 运行需要几个小时。我很确定它经过了非常优化,因为我对 Python 的了解很差。
感谢您提供的任何帮助。
更新 我的问题是是否有更好的方法在 Python 中实现循环以加快速度。我在这里阅读了很多关于 Python 的其他问题的答案,这些问题建议尽可能避免在 Python 中嵌套 for 循环,我只是想知道是否有人知道在没有循环或更好的情况下实现像下面的 Python 代码这样的东西的好方法优化循环。我意识到这可能是一项艰巨的任务!
到目前为止,我一直在使用 FFT,但我的主管想看看 DFT 会产生什么样的差异。这是因为通常情况下,天线位置不会出现在精确的像素值处。使用 FFT 需要四舍五入到最接近的像素值。
我正在使用 Python 作为 CASA,用于减少射电天文数据集的计算机程序是用 Python 编写的,并且在其中实现 Python 脚本比 C 容易得多。
原始代码
def DFT_Vis(ANT_Pix="",IMap="",QMap="",UMap="", NMap="", Nvis=""):
UV=numpy.zeros([Nvis,6])
Offset=(NMap+1)/2
ANT=ANT_Pix+Offset;
i=0
l=0
k=0
SumI=0
SumRL=0
SumLR=0
z=0
RL=QMap+1j*UMap
LR=QMap-1j*UMap
Factor=[math.e**(-2j*math.pi*z/NMap) for z in range(NMap)]
for i in range(Nvis):
X=ANT[i,0]
Y=ANT[i,1]
for l in range(NMap):
for k in range(NMap):
Temp=Factor[int((X*l)%NMap)]*Factor[int((Y*k)%NMap)];
SumI+=IMap[l,k]*Temp
SumRL+=RL[l,k]*Temp
SumLR+=IMap[l,k]*Temp
k=1
UV[i,0]=SumI.real
UV[i,1]=SumI.imag
UV[i,2]=SumRL.real
UV[i,3]=SumRL.imag
UV[i,4]=SumLR.real
UV[i,5]=SumLR.imag
l=1
k=1
SumI=0
SumRL=0
SumLR=0
return(UV)
最佳答案
您可能应该使用 numpy 的傅里叶变换代码,而不是自己编写:http://docs.scipy.org/doc/numpy/reference/routines.fft.html
关于python - Python 中的 DFT 比 C 花费更长的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10063704/
所以我的问题是: 为什么(以及如何避免)C# 中的 Is 运算符的生命周期比 if 中使用的更长? 例子: Animal a = new Cat(); if (a is Cat c) { Co
我遇到了这个问题,我已经尝试解决了很长一段时间。理想情况下,我希望 particles.js 的“生成框”向下延伸到页面底部(由 fullpage.js 计算的 7 x viewport),这样当使用
我想让一个 div(我的侧边栏)延伸到页面底部。我知道我需要添加“高度:100%;”为了做到这一点。 但是当我添加 height: 100%; 时,内容少于侧边栏的页面会降低侧边栏的高度,然后您就看不
只有我这么认为吗,还是在 SQL Server 2008 Management Studio 中扩展数据库列表比在 SQL Server 2005 Management Studio 中扩展数据库列表
我是一名优秀的程序员,十分优秀!