小编Ahm*_*sih的帖子

将向量值相乘的最简单方法?

我有一个愚蠢的问题。大约 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)

到目前为止,我发现至少有几个这样的操作会有所帮助的实例,所以我不确定为什么它不会以某种形式存在。所以,我想我有两个问题:

  1. 有没有比制作自己的自定义函数更简单的方法来获得我正在寻找的结果?
  2. 为什么没有像这样的标准向量操作开始?

非常感谢您的宝贵时间!

vector linear-algebra vectormath unity-game-engine

8
推荐指数
1
解决办法
6675
查看次数

TypeScript 中的破折号问号语法是什么?

我的意思不是问号语法,而是我问-?的,例如:

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? 如果不是,这个语法叫什么,我在哪里可以阅读更多关于它的信息?

syntax optional typescript

7
推荐指数
1
解决办法
370
查看次数

Windows,Emacs,Git Bash和shell命令

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)

windows emacs shell

6
推荐指数
1
解决办法
8324
查看次数

使用Python进行反向过滤

给定的脉冲响应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)

python signal-processing numpy sympy scipy

6
推荐指数
1
解决办法
2109
查看次数

Java相当于Matlab的`eps`或Numpy/Python的`spacing`函数(浮点相对精度)

背景

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语言)?

参考

python java floating-point matlab floating-accuracy

5
推荐指数
1
解决办法
6637
查看次数

Matlab和Numpy以及Python的'round`函数之间的差异

简化的问题

我可以让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)

python matlab numerical numpy rounding

5
推荐指数
1
解决办法
2833
查看次数

没有DOTALL的情况下如何匹配任何东西(DOTALL)?

我的正则表达式需要默认的非换行匹配点和re.DOTALL点(.匹配换行符)。我需要在一个正则表达式中使用多个前者,而仅后者。但是,因为我需要一个点来匹配换行符,所以我必须使用DOTALL,并使用[^\n]几次才能获得默认的“除换行符之外的任何东西”行为。

我想摆脱,将其DOTALL替换为[^\n].并在我需要的位置提供一种更复杂的方式来匹配“包括换行符在内的所有内容”。

因此,问题是:与“不包括换行符”匹配的正则表达式语法是什么DOTALL

python regex

5
推荐指数
2
解决办法
265
查看次数

当磁盘上的文件发生更改时,Emacs会挂起

我在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就在这里.没什么复杂的.这是细分:

  • better-defaults(ido-mode,remove menu-bar,uniquify buffer`forward,saveplace)
  • recentf模式
  • 自定义框架标题
  • 视线模式
  • 需要最终换行符并在保存时删除尾随空格
  • 具有自动模式列表的降价模式
  • Flyspell与Aspell后端
  • 具有自动模式alist的Powershell模式
  • Ruby自动模式 - alist
  • 具有自动模式alist的木偶模式
  • 具有自动模式的特征(小黄瓜)模式

特定文件是一个markdown文件,具有Github风格的Markdown模式和启用Flyspell模式.

windows emacs

5
推荐指数
1
解决办法
669
查看次数

CouchDB/PouchDB 中的任意文档排序

我正在使用 CouchDB/PouchDB 构建可以被视为幻灯片应用程序的东西:每个“幻灯片”都是它自己的 Couch 文档,幻灯片可以重新排序或删除,并且可以在现有幻灯片之间或在开头或幻灯片结束。一个幻灯片可以从一张幻灯片增加到 10,000 张幻灯片,所以我对空间和时间效率很敏感。

我首先制作了幻灯片创建/编辑功能,完全低估了跟踪幻灯片排序的难度。这很难,因为每个幻灯片文档的顺序完全独立于幻灯片文档本身,也就是说,我无法按时间或文档中包含的某个数字对其进行排序。我在 StackOverflow 上看到了许多关于如何跟踪关系数据库中的排序的问题:

但所有这些都涉及

  1. 使用浮点辅助键进行重新排序/创建/删除,并定期对索引进行规范化(即,假设两个文档是 order-index 1.0 和 2.0,然后中间的第三个文档获取键 1.5,然后第四个获取 1.25,…… , 直到 ~31 个文档被插入其中,并且您会遇到浮点精度问题);
  2. 一种链表方法,其中幻灯片文档有一个previousnext字段,其中包含文档的任一侧的主键;
  3. 为每个文档重新排序/插入/删除更新所有文档的非常简单的方法。

这些都不适合 CouchDB:#1 在 SQL 或 CouchDB 中会产生大量的偶然复杂性。#2 不可靠,因为缺乏原子事务(CouchDB 可能会用它的新文档更新前一个文档,next但同时另一个客户端可能已经更新了新的下一个文档,因此更新新的下一个文档将失败并显示 409,并且您的链表被保留在不一致的状态)。出于同样的原因,#3 是完全行不通的。


我正在评估的一种面向 CouchDB 的方法将创建一个仅包含幻灯片排序的文档:它可能包含一个主键到订单号的哈希对象以及一个将订单号转换为-的数组主键,并在幻灯片重新排序/插入/删除时更新此对象。这样做的缺点是 Couch 会为每次订单更改(重新排序/插入/删除)保留一份这个潜在大文档的副本——CouchDB 不支持压缩单个文档,我不想在我的文件上运行压缩整个数据库,因为我喜欢保留每个幻灯片文档的历史记录。另一个缺点是,在数千张幻灯片之后,每次对排序的更改都涉及将整个对象(数百 KB)从 PouchDB/客户端传输到 Couch。

这种方法的一个调整是创建第二个数据库来保存这个订购文档并打开它的自动压缩。跟踪两个数据库连接需要做更多的工作,而且我最终必须将大量数据放到网络上,但我将有一种强大的方式来在 CouchDB 中订购文档。


所以我的问题是:CouchDB 人们通常如何存储文档的顺序?更有经验的 CouchDB 人员能否看到我上面概述的方法中的任何缺陷?

database couchdb pouchdb

5
推荐指数
1
解决办法
593
查看次数

如何从 GitHub 安装程序?

我对 GitHub 很陌生。最近我从 GitHub 下载了一个在 Sublime Text 中打印的程序。这是链接: https: //github.com/svenax/SublimePrint 但是当我下载了名为 SublimePrint-master.zip 的程序后,我不知道如何在 Windows 中安装它。我解压 SublimePrint-master.zip 后似乎没有设置文件或安装文件。有人能给我提示如何从 GitHub 安装程序吗?非常感谢。

github sublimetext2 sublimetext3 sublime-text-plugin

5
推荐指数
1
解决办法
4万
查看次数