- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个 astropy.units 等效项,以便在处理干涉天文数据时在不同的 UV 坐标单位之间进行转换。存储坐标的最常见方法是以秒为单位,但我通常直接转换为 lambda(取决于剩余波长/频率)。我希望能够在:(纳)秒 - (千) lambda - 米之间进行转换。转换所需的输入是各个观测值的静止频率。
方法的初始描述:
到目前为止,我得出的结论如下。
import astropy.units as un
import astropy.constants as co
restfreq_hz = 203e9 #203 Ghz
lambdas = un.def_unit('lambdas', format={'format' : r'\lambda'})
klambdas = un.def_unit('kilolambdas', format={'format' : r'k\lambda'})
# equivalency (from_unit, to_unit, forward, backward)
lambdas_equivalencies = [
(lambdas, un.s, lambda x: x/restfreq_hz, lambda x: x*restfreq_hz),
(lambdas, un.m, lambda x: x/restfreq_hz * co.c.to(un.m/un.s).value, lambda x: x/co.c.to(un.m/un.s).value * restfreq_hz),
(lambdas, un.ns, lambda x: x/restfreq_hz * 1e9, lambda x: x / 1e-9*restfreq_hz ),
(lambdas, klambdas, lambda x: x*1e-3, lambda x: x*1e3),
(klambdas, un.s, lambda x: 1e3*x/restfreq_hz, lambda x: 1e-3*x*restfreq_hz),
(klambdas, un.m, lambda x: 1e3*x/restfreq_hz * co.c.to(un.m/un.s).value, lambda x: 1e-3*x/co.c.to(un.m/un.s).value * restfreq_hz),
(klambdas, un.ns, lambda x: 1e3*x/restfreq_hz * 1e9, lambda x: 1e-3*x / 1e-9*restfreq_hz ),
(un.m, un.s, lambda x: x/co.c.to(un.m/un.s).value, lambda x: x*co.c.to(un.m/un.s).value),
(un.m, un.ns, lambda x: x/co.c.to(un.m/un.ns).value, lambda x: x*co.c.to(un.m/un.ns).value)
]
举个例子,我现在可以这样做:
In [10]: (100.*klambdas).to(un.m ,equivalencies=lambdas_equivalencies)
Out[10]: <Quantity 147.68101379310343 m>
In [13]: (12 * un.m).to(lambdas, equivalencies=lambdas_equivalencies)
Out[13]: <Quantity 8125.621359026984 lambdas>
In [29]: (1000000*un.ns).to(lambdas, equivalencies=lambdas_equivalencies)
Out[29]: <Quantity 203000000.0 lambdas>
这是执行此操作的首选/最佳方式,还是我遗漏了某些内容?欢迎任何其他调整/提示!
其他问题:
我想将其合并到一个对象中。这样我就可以用单位“klambda”定义一个数组(对象属性)。然后我希望能够将其即时转换为“lambda”或“m”。 我可以在不重新定义数组类的情况下做到这一点吗?
最佳答案
您当前所拥有的内容可以工作,但实际上您可以稍微简化一下。特别是,如果 astropy.units 已经知道如何转换,例如s
到 ns
那么你不需要同时定义 m
到 s
和 m
改为 ns
,它就能算出来。为了进一步简化,您可以将 klambdas
定义为 lambda
的倍数。这给出:
lambdas = un.def_unit('lambdas', format={'format' : r'\lambda'})
klambdas = un.def_unit('kilolambdas', 1e3 * lambdas, format={'format' : r'k\lambda'})
# equivalency (from_unit, to_unit, forward, backward)
lambdas_equivalencies = [
(lambdas, un.s, lambda x: x/restfreq_hz, lambda x: x*restfreq_hz),
(lambdas, un.m, lambda x: x/restfreq_hz * co.c.to(un.m/un.s).value, lambda x: x/co.c.to(un.m/un.s).value * restfreq_hz),
(un.m, un.s, lambda x: x/co.c.to(un.m/un.s).value, lambda x: x*co.c.to(un.m/un.s).value),
]
实际上,您可能应该有一个采用频率的等价函数:
def lambdas_equivalencies(restfreq_hz):
eq = [
(lambdas, un.s, lambda x: x/restfreq_hz, lambda x: x*restfreq_hz),
(lambdas, un.m, lambda x: x/restfreq_hz * co.c.to(un.m/un.s).value, lambda x: x/co.c.to(un.m/un.s).value * restfreq_hz),
(un.m, un.s, lambda x: x/co.c.to(un.m/un.s).value, lambda x: x*co.c.to(un.m/un.s).value),
]
return eq
然后将其用作
(100.*klambdas).to(un.m ,equivalencies=lambdas_equivalencies(restfreq_hz))
并且您还应该能够将restfreq_hz改为一个可以在函数内部需要时转换为Hz
的量::
def lambdas_equivalencies(restfreq):
restfreq_hz = restfreq.to(u.Hz, equivalencies=u.spectral())
...
那么你甚至可以传递波长等。
对于第二个问题,我认为您可能必须创建一个新的数量类,该类继承自 Quantity
并简单地重载 to
。
关于python - 天体单位等效 - 干涉测量基线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27981489/
我一直在不同的设备上测试相同的字体(Big John 是字体的名称)。字体的高度或基线在不同设备上不一致。 图片如下: Windows Chrome: Android Chrome: macOS
如何删除出现在 qml 中文本区域下方的行?有可能吗?因为律动音乐有没有台词的东西!那是什么?如果不是,我应该改用什么其他组件? 提前致谢 TextArea{ id:searc
如何删除出现在 qml 中文本区域下方的行?有可能吗?因为律动音乐有没有台词的东西!那是什么?如果不是,我应该改用什么其他组件? 提前致谢 TextArea{ id:searc
这是我遇到的问题的一个简单示例: Foo Bar Baz Bat Plugh XYZZY 除了 TextBox
我目前正在编写一个 Java-FX 程序,其中包含 GridPane 中的 ListView。我想将 ListView 的第一个项目的基线与 ListView 左侧的标签对齐,但 ListView 最
我有一个 iOS 5 时代的应用程序,我需要将其更新为“现代”条款,以便能够向应用程序商店提交更新。我以 iOS 8 为基准,使用自动布局和尺寸分类。 基本 UI 是一个选项卡栏 Controller
在eclipse源码库中编译。我有“尚未设置 API 基线...”错误。 我尝试添加 API Baseline,但我不知道如何制作或添加它。 API Baseline 的用途是什么,如何添加或制作?
我认为我是一种管理我的内容的好方法,但你不太确定这是否可行。 认为 fexbox 可以派上用场...关于我如何划分问题的 3 个简单案例 我想要一个网格,其中的元素背景与行中最大的元素对齐。 我希望所
我正在尝试在 OpenAI 基线中运行 SuperMarioBros 环境。通常这些复古环境与健身房图书馆支持的原生attari 2600不同。 为了使其与基线一起运行,需要安装 retro 附带的第
这个问题在这里已经有了答案: How to control key-frame generation of ffmpeg? (1 个回答) 6年前关闭。 我是 FFMPEG 的新手。我正在尝试对基线配
请参阅此页面> www.tvdiever.nl HTML: CSS: /* @fontface! */ /* all fine in all browsers mac or windows *
有人知道这个 websockets 安全问题的解决方案吗?它在 1.5 基准上运行良好,但在 2.0 上运行不佳。有什么想法可能是问题所在以及 SSL/TLS 从 1.5 到 2.0 发生了什么变化?
在 vagrant 文档中,我没有找到有关在使用“vagrant package”时如何在同一基线框中引用包含的 Vagrantfile 中包含的文件的提示。有人可以帮忙吗? 详细信息: 从头开始为
我有一个实时视频流相机设备,它与我的 Android 手机处于同一网络中。我的安卓版本是 4.1.2。摄像机通过 RTSP 传输视频,其格式为 MP4。地址为:rtsp://192.168.0.102
在 OpenAI 基线代码 DQN 上, tf.stop_gradient 是在构建操作图时对目标网络的 q 值使用的,以防止目标 q 值对损失最小化的贡献。 (第 213 行) 但是,在调用 min
以下是当我向现有代码添加任何新方法时遇到的错误(尤其是当我向接口(interface)或类添加任何方法时) --- animal-sniffer-maven-plugin:1.15:check (d
我是一名优秀的程序员,十分优秀!