这是一个奇怪的我很困惑.我最近注意到在Gnu Octave提示符下,可以输入负零,如下所示:
octave:2> abomination = -0
Run Code Online (Sandbox Code Playgroud)
它也记得它:
octave:3> abomination
abomination = -0
Run Code Online (Sandbox Code Playgroud)
为了理智,负零确实等于常规零.但我也注意到这个标志还有一些其他的影响.像这些:
octave:6> 4 * 0
ans = 0
octave:7> 4 * -0
ans = -0
octave:8> 4 / 0
warning: division by zero
ans = Inf
octave:9> 4 / -0
warning: division by zero
ans = -Inf
Run Code Online (Sandbox Code Playgroud)
可以看出,通过某些操作保留了标志.但我的问题是为什么.这似乎是对标准数学的彻底背离,其中零基本上没有符号.有这个有吸引力的数学属性吗?这在某些数学领域是否重要?
仅供参考:Matlab,以八度为模型,没有负零.任何使用它们的尝试都被视为常规零.
编辑:Matlab确实有负零,但它们不会显示在默认输出中.
我想知道为什么必须有这么多正则表达方言.为什么它看起来像这么多语言,而不是重复使用一种经过验证的方言,似乎一心想写自己的语言.
我的意思是,我知道其中一些确实有非常不同的后端.但是不应该从程序员那里抽象出来吗?
我更多地指的是奇怪但小的差异,比如括号必须用一种语言转义,但是在另一种语言中是文字.或者元字符意味着有些不同的东西.
是否有任何特殊原因我们不能为正则表达式提供某种普遍方言?我认为这对于那些必须使用多种语言的程序员来说会更容易.
我目前正致力于在Octave中复制Matlab的regionprops函数的一些功能.但是,我对功能的一个子集有点挂断.'Eccentricity','MajorAxisLength','MinorAxisLength'和'Orientation'属性是我的观点.在文档中,它们都来源于"......与区域具有相同二阶矩的椭圆".
所以我的问题是,这些第二时刻是什么,我如何找到它们?
我正在查看此链接:http: //en.wikipedia.org/wiki/Image_moments
老实说,这让我更加困惑.任何人都可以指向一些更开始友好的东西吗?谢谢.
我正在为GNU Octave编写一个MATLAB RegionProps函数版本.我已经完成了大部分工作,但我仍然在努力实现一些部分.我之前曾询问过一个地区的第二个中心时刻.
这在理论上是有帮助的,但我实际上在实施这些建议时遇到了麻烦.我得到的结果与MATLAB(或者常识)的结果大不相同,真的不明白为什么.
考虑这个测试图像:

我们可以看到它与X轴成45度倾斜,次轴和长轴分别为30和100.
通过MATLAB的RegionProps功能运行它确认了这一点:
MajorAxisLength: 101.3362
MinorAxisLength: 32.2961
Eccentricity: 0.9479
Orientation: -44.9480
Run Code Online (Sandbox Code Playgroud)
与此同时,我甚至没有让轴正确.我正在尝试使用维基百科中的这些公式.
到目前为止我的代码是:
function outmom = raw_moments(im,i,j)
total = 0;
total = int32(total);
im = int32(im);
[height,width] = size(im);
for x = 1:width;
for y = 1:height;
amount = (x ** i) * (y ** j) * im(y,x);
total = total + amount;
end;
end;
outmom = total;
Run Code Online (Sandbox Code Playgroud)
function cmom = central_moments(im,p,q);
total …Run Code Online (Sandbox Code Playgroud) 作为背景,我正在运行Debian Lenny,并尝试过使用GNOME和Fluxbox.
无论如何,我一直在寻找如何在桌面上绘图,我在这里找到并尝试了这段代码:http: //blog.prashanthellina.com/2007/08/24/drawing-on-your-desktop/
它工作正常,除了终止它(通过击中控件C),X失去了创建新窗口的能力.
我原以为可能问题是pygame没有释放一些资源,所以我添加了一段代码来捕获kill信号,给我以下内容:
"""
Run the following command in the shell before executing this script
export SDL_WINDOWID=`xwininfo -root|grep "id:"|sed 's/^.*id: //'|sed 's/ (.*$//'`
"""
import pygame
import sys
import random
import time
import signal
pygame.init()
window = pygame.display.set_mode((1280, 1024))
screen = pygame.display.get_surface()
def handle_sigint(signum, frame):
"""I want to ensure resources are released before bailing."""
print("SIGINT received.");
pygame.display.quit()
pygame.quit()
sys.exit(0)
# Set handler to catch C^C Interupts
signal.signal(signal.SIGINT, handle_sigint)
while 1:
for event in pygame.event.get():
if …Run Code Online (Sandbox Code Playgroud)