在 Matlab 中有一个命令来定义一个新的数字类型,例如:
numerictype(0,16,8)
Run Code Online (Sandbox Code Playgroud)
请参阅文档:https : //www.mathworks.com/help/fixedpoint/ref/embedded.numerictype.html
numpy 或其他库中是否有等价物?我可以使用类似的命令创建自己的 dtype 吗?
编辑:
由于我被要求提供更多信息,这里是关于定点数字类型如何在 matlab 中工作的参考:https : //www.mathworks.com/help/dsp/ug/concepts-and-terminology.html基本上你设置了signed/无符号性质,然后一个单词应该有多长以及分数长度。因此,例如在我给您的示例中,将有一个带符号的数字,字长为 16,小数长度为 10。
从我读到的关于结构化数组的内容来看,类似的表示可能是这样的:
dtype=[('signed', np.bool_), ('word', np.int16), ('frac', np.int16)])
Run Code Online (Sandbox Code Playgroud)
我的最终目标是实现三个独立的 reinterpertcast 语句,即:
reinterpretcast(EVMacq,numerictype(0,16,8))
reinterpretcast(Payload16c,numerictype(1,16,16))
reinterpretcast(Payload32,numerictype(1,32,32))
Run Code Online (Sandbox Code Playgroud)
如果有一种方法可以更简单地做到这些,我非常乐意以不同的方式做到这一点。
这是我在评论中添加的信息的转录:
mathworks.com/help/fixedpoint/ref/reinterpretcast.html 这里是来自 matlab 的 reinterpretcast 的文档。本质上,您传入一个整数或一个定点数,该函数将移动小数点。这使得即使二进制数据没有改变变量的数值也是不同的。
有时,您可以通过正常除法对某些范围的数字实现类似的效果,但这并非万无一失,并且是一种不受欢迎的解决方案。
我也许可以自己写一些可以做到这一点的东西,但如果有人比我更聪明已经做到了,我会更喜欢它。考虑到大多数 matlab 功能都包含在 numpy 中,我认为这也是如此。结构化数组可能是一个不错的选择,但我不确定对它们进行转换的确切方式。
编辑:
我现在意识到,如果有人能告诉我如何做与这个演员完全相同的事情,我真的只想磨练一个命令,我会非常高兴,因为我仍然无法弄清楚。速度不是问题,它只需要运行即可。
这是命令:
reinterpretcast(Payload16c,numerictype(1,16,16))其中 Payload16c 是由 定义的复数数组np.complex(real,imag)。先感谢您。
我尝试了这样的事情,但没有奏效,但可能在正确的轨道上。我似乎偏离了 MatLab 中发生的一些比例因子,但每次都不相同的比例因子:
i = 0
result = []
#first generate a binary number that is a one in the highest …Run Code Online (Sandbox Code Playgroud) 我正在使用 chart.js 模块来绘制一些数据,并使用 chartjs-plugin-zoom 来启用缩放和平移,但是尽管缩放有效,x 轴上的标签不会因任何原因而改变。我见过类似的问题,但它们都涉及时间序列数据,因此建议无济于事。
这是缩小的情节:
这是放大的:
要注意的关键是 y 轴上的标签如何更改,但 x 轴标签没有更改。这是图表的相关配置变量:
const config3 = {
type: 'line',
data: {
labels: [I ran out of chars but this is just a very long list of numbers in this format: 1,2,3,4,5],
datasets: [
{
label: "",
backgroundColor: '#'+Math.floor(Math.random()*16777215).toString(16),
borderColor: '#0071BC',
data: [I ran out of chars but this is just a very long list of numbers in this format: 1,2,3,4,5],
fill: false,
borderWidth: 1,
},
],
},
options: {
responsive: …Run Code Online (Sandbox Code Playgroud)