我有一个愚蠢的问题。大约 10 年前,我参加了一个向量数学课,我可以发誓我记得一个允许我将向量的值相乘的运算,如下所示:
Vector3 v1 = new Vector3(1, 0, 2)
Vector3 v2 = new Vector3(5, 5, 5)
//Vector3 v3 = SomeVectorOperation(v1, v2) = (1 * 5, 0 * 5, 2 * 5)
Run Code Online (Sandbox Code Playgroud)
现在查看我所有的笔记,以及我可以在网上找到的所有内容,看起来这根本不是一个常见的操作。当然,我可以编写一个函数来做到这一点:
Vector3 VectorMult(Vector3 v1, Vector3 v2) {
return new Vector3(v1.x * v2.x, v1.y * v2.y, v1.z * v2.z);
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现至少有几个这样的操作会有所帮助的实例,所以我不确定为什么它不会以某种形式存在。所以,我想我有两个问题:
非常感谢您的宝贵时间!
我的意思不是问号语法,而是我问-?的,例如:
type Required<T> =
T extends object
? { [P in keyof T]-?: NonNullable<T[P]>; } // <---------- "-?" here
: T;
Run Code Online (Sandbox Code Playgroud)
通过2018 年 GitHub 评论。我在 TypeScript 手册关于高级类型和实用程序类型的章节中找不到这种语法。
-?如上所述仍然在 TypeScript 3.8 中编译,并且似乎是相反的?,即,使密钥成为必需的?它相当于Required? 如果不是,这个语法叫什么,我在哪里可以阅读更多关于它的信息?
Windows 7. Emacs 24.3.1.Git 1.8.1.msysgit.1.我在等效的.emacs文件中有以下内容:
(if (equal system-type 'windows-nt)
(progn (setq explicit-shell-file-name
"C:/Program Files (x86)/Git/bin/sh.exe")
(setq shell-file-name "bash")
(setq explicit-sh.exe-args '("--login" "-i"))
(setenv "SHELL" shell-file-name)
(add-hook 'comint-output-filter-functions 'comint-strip-ctrl-m)))
Run Code Online (Sandbox Code Playgroud)
当我想做Mx shell时,这很有用:我可以弹出一个shell并输入"ls".
但是,Mx shell命令失败.当我尝试通过shell-command运行"ls"时(根据Ch f shell-command,它应该在*Shell命令输出*缓冲区中打印其输出),我收到一条错误消息:
"搜索程序:权限被拒绝,bash"
关于调用过程,Google上有一些非常古老的建议,以及关于让shell在Emacs中运行的许多关于StackOverflow的问题.请注意,Mx shell运行良好,我想要的是shell命令.
(原因:https://github.com/donkirkby/live-py-plugin#installing-the-emacs-mode)
给定的脉冲响应h和输出y(均为一维阵列),我试图找到一种方法来计算逆滤波器x,使得h * x = y,其中*表示卷积乘积.
例如,假设脉冲响应h是[1,0.5],并且输出是阶跃函数(即,由所有1s 组成).可以看出第一个系数应该是[1, 0.5, 0.75],产生一个输出[1, 1, 1, 0.375].最后一个术语包含错误,但这不是一个问题,因为我只关心输出到一定的最大时间.
我想将这种反向滤波自动化并"扩展"为更长,更复杂的脉冲响应函数.到目前为止,我已经想出获得系数的唯一方法是使用sympy生成Z变换的级数展开.(注意,阶跃函数的Z变换是1 /(1-z)).
但是,我注意到,在计算系数时,同情心很慢:即使是一个简单的简短示例,也需要0.8秒,如下面的脚本所示:
import numpy as np
from scipy import signal
from sympy import Symbol, series
import time
h = np.array([1,0.5]) # Impulse response function
y = np.array([1,1,1,1,1]) # Ideal output is a step function
my_x = np.array([1,0.5,0.75]) # Inverse filter response (calculated manually)
my_y = signal.convolve(h,my_x) # …Run Code Online (Sandbox Code Playgroud) Matlab的内置eps函数[1]可以取一个数值X并返回"从abs(X)相同精度的大小浮点数中的下一个更大的正距离".
>> eps(1)
ans =
2.2204e-16
>> eps(single(1))
ans =
1.1921e-07
>> eps(1e6)
ans =
1.1642e-10
>> eps(single(1e6))
ans =
0.0625
Run Code Online (Sandbox Code Playgroud)
同样,Numpy提供了spacing函数[2]:
In [18]: import numpy as np
In [19]: np.spacing(1)
Out[19]: 2.2204460492503131e-16
In [20]: np.spacing(np.single(1))
Out[20]: 1.1920929e-07
In [21]: np.spacing(1e6)
Out[21]: 1.1641532182693481e-10
In [22]: np.spacing(np.single(1e6))
Out[22]: 0.0625
Run Code Online (Sandbox Code Playgroud)
Java中是否存在等效函数(因此像Clojure这样的JVM语言)?
我可以让Numpy同意Matlab和Python round吗?
Matlab 2013a:
>> round(-0.5)
ans =
-1
Run Code Online (Sandbox Code Playgroud)
Python(使用Numpy数组,或只是一个标量,相同的结果):
>>> import numpy
>>> round(numpy.array(-0.5))
-1.0
Run Code Online (Sandbox Code Playgroud)
Numpy,奇怪的是:
>>> import numpy
>>> numpy.round(numpy.array(-0.5))
-0
Run Code Online (Sandbox Code Playgroud)
圆形平台的这种差异是否依赖?
Matlab附带一个包含一些音频数据的文件"handel.mat":
>> which handel.mat
C:\Program Files\MATLAB\R2013a\toolbox\matlab\audiovideo\handel.mat
>> load handel
>> soundsc(y) % play the short audio clip
Run Code Online (Sandbox Code Playgroud)
我想在Python中使用这些数据,所以我使用scipy.io.loadmat[1].具体来说,我想缩放音频的值以跨越16位有符号整数的整个范围,即,音频信号的最小值被映射到-2 ^ 15,最大的值被映射到2 ^ 15-1.在Matlab中执行此操作时,我感到惊讶的是给出了与Python不同的结果:
Matlab的:
>> load handel
>> int16(round(interp1([min(y), max(y)], [-2^15, 2^15-1], y(1:10))))
ans =
-1 %%% <-- Different from Python
-253
-3074
-1277
252
1560
772
-1025
-1277
-3074
Run Code Online (Sandbox Code Playgroud)
蟒蛇:
In …Run Code Online (Sandbox Code Playgroud) 我的正则表达式需要默认的非换行匹配点和re.DOTALL点(.匹配换行符)。我需要在一个正则表达式中使用多个前者,而仅后者。但是,因为我需要一个点来匹配换行符,所以我必须使用DOTALL,并使用[^\n]几次才能获得默认的“除换行符之外的任何东西”行为。
我想摆脱,将其DOTALL替换为[^\n],.并在我需要的位置提供一种更复杂的方式来匹配“包括换行符在内的所有内容”。
因此,问题是:与“不包括换行符”匹配的正则表达式语法是什么DOTALL?
我在Windows 8上使用Emacs v24.3.1.
当我用该文件打开Emacs缓冲区时,我在磁盘上进行了文件更改.一旦我尝试更改缓冲区,迷你缓冲区中就会显示一条消息.
Fileblah.txt changed on disk; really edit the buffer? (y, n, r or C-h)
Run Code Online (Sandbox Code Playgroud)
我希望能够r重新加载文件的磁盘版本,但没有任何反应.Emacs完全停止响应输入.在我所知的情况下,列出的所有键都不起作用,也没有任何其他键.我不能C-g出迷你了.Alt-F4不起作用,不是Close window从任务栏.我必须从任务管理器中删除该进程.
任何人都知道我在这里做错了什么?
如果它的各种模式彼此不好玩,作为参考,我的init.el就在这里.没什么复杂的.这是细分:
特定文件是一个markdown文件,具有Github风格的Markdown模式和启用Flyspell模式.
我正在使用 CouchDB/PouchDB 构建可以被视为幻灯片应用程序的东西:每个“幻灯片”都是它自己的 Couch 文档,幻灯片可以重新排序或删除,并且可以在现有幻灯片之间或在开头或幻灯片结束。一个幻灯片可以从一张幻灯片增加到 10,000 张幻灯片,所以我对空间和时间效率很敏感。
我首先制作了幻灯片创建/编辑功能,完全低估了跟踪幻灯片排序的难度。这很难,因为每个幻灯片文档的顺序完全独立于幻灯片文档本身,也就是说,我无法按时间或文档中包含的某个数字对其进行排序。我在 StackOverflow 上看到了许多关于如何跟踪关系数据库中的排序的问题:
但所有这些都涉及
previous和next字段,其中包含文档的任一侧的主键;这些都不适合 CouchDB:#1 在 SQL 或 CouchDB 中会产生大量的偶然复杂性。#2 不可靠,因为缺乏原子事务(CouchDB 可能会用它的新文档更新前一个文档,next但同时另一个客户端可能已经更新了新的下一个文档,因此更新新的下一个文档将失败并显示 409,并且您的链表被保留在不一致的状态)。出于同样的原因,#3 是完全行不通的。
我正在评估的一种面向 CouchDB 的方法将创建一个仅包含幻灯片排序的文档:它可能包含一个主键到订单号的哈希对象以及一个将订单号转换为-的数组主键,并在幻灯片重新排序/插入/删除时更新此对象。这样做的缺点是 Couch 会为每次订单更改(重新排序/插入/删除)保留一份这个潜在大文档的副本——CouchDB 不支持压缩单个文档,我不想在我的文件上运行压缩整个数据库,因为我喜欢保留每个幻灯片文档的历史记录。另一个缺点是,在数千张幻灯片之后,每次对排序的更改都涉及将整个对象(数百 KB)从 PouchDB/客户端传输到 Couch。
这种方法的一个调整是创建第二个数据库来保存这个订购文档并打开它的自动压缩。跟踪两个数据库连接需要做更多的工作,而且我最终必须将大量数据放到网络上,但我将有一种强大的方式来在 CouchDB 中订购文档。
所以我的问题是:CouchDB 人们通常如何存储文档的顺序?更有经验的 CouchDB 人员能否看到我上面概述的方法中的任何缺陷?
我对 GitHub 很陌生。最近我从 GitHub 下载了一个在 Sublime Text 中打印的程序。这是链接: https: //github.com/svenax/SublimePrint 但是当我下载了名为 SublimePrint-master.zip 的程序后,我不知道如何在 Windows 中安装它。我解压 SublimePrint-master.zip 后似乎没有设置文件或安装文件。有人能给我提示如何从 GitHub 安装程序吗?非常感谢。