小编mtr*_*trw的帖子

为什么归一化数字的最高有效位始终为1?

Wikipedia中的Significand条目

当使用二进制时,有效位的特征在于其宽度以二进制数字(位)表示。因为对于一个归一化的数字,最高有效位始终为1,所以通常不存储该位,因此将其称为“隐藏位”。根据上下文,隐藏位可能会或可能不会计入有效数字的宽度。例如,通常将相同的IEEE 754双精度格式描述为具有53位有效数字(包括隐藏位)或52位有效数字(不包括隐藏位)。隐藏位的概念仅适用于二进制表示形式。IEEE 754将精度p定义为有效位数,包括任何隐含的前导位(例如,双精度格式的精度p为53)。

为什么对于归一化数,最高有效位始终为1?可以请一个例子解释一下吗?

algorithm floating-point mantissa exponent

4
推荐指数
2
解决办法
1292
查看次数

具有间隙的信号的功率谱密度?

有谁知道是否有可能找到信号的功率谱密度,其中有间隙.例如(在matlab语法中导致这是我熟悉的)

ta=1:1000; 
tb=1200:3000;

t=[ta tb];    % this is the timebase
signal=randn(size(t));  this is a signal

figure(101)

plot(t,signal,'.')
Run Code Online (Sandbox Code Playgroud)

我希望能够在更长的时间基础上确定频率,而不仅仅是各个数据部分.显然我可以采用各个部分的PSD,但这将限制最低频率.我可以插入数据,但这会使PSD 变色.

任何想法将不胜感激.

python math matlab signal-processing

3
推荐指数
1
解决办法
2594
查看次数

快速卷积算法

我需要卷积两个一维信号,一个平均有500个点(这个是Hanning窗口函数),另一个是125000.每次运行,我需要应用三次卷积运算.我已经有一个基于scipy文档运行的实现.如果你愿意,你可以在这里看到代码(Delphi代码提前):

function Convolve(const signal_1, signal_2 : ExtArray) : ExtArray;
var
  capital_k : Integer;
  capital_m : Integer;
  smallest : Integer;
  y : ExtArray;
  n : Integer;
  k : Integer;
  lower, upper : Integer;
begin
  capital_k := Length(signal_1) + Length(signal_2) - 1;
  capital_m := Math.Max(Length(signal_1), Length(signal_2));
  smallest := Math.Min(Length(signal_1), Length(signal_2));
  SetLength(y, capital_k);
  for n := 0 to Length(y) - 1 do begin
    y[n] := 0;
    lower := Math.Max(n - capital_m, 0);
    upper := Math.Min(n, capital_k);
    for k := lower to upper do …
Run Code Online (Sandbox Code Playgroud)

delphi signal-processing filter convolution

3
推荐指数
2
解决办法
3360
查看次数

c89和c99中的剩余运算符

c99标准表示模运算的结果与第一个操作数具有相同的符号.所以-9 % 7 = -29 % -7 = 2.

我在一本书中读到c89标准取决于实施.所以-9 % 7可以收益-25??? 剩下的-9 / 7可能是5多少?

c c99 c89

3
推荐指数
2
解决办法
845
查看次数

如何遍历Android中的所有活动组件(视图)

我需要获取所有活动组件的数组,然后我需要迭代这个数组并选择,例如,只选择按钮.这该怎么做 ?

android

3
推荐指数
1
解决办法
3519
查看次数

傅里叶变换舍入误差

我正在搞乱傅立叶变换.现在我已经创建了一个实现DFT实现的类(没有像FFT atm这样做).这是我用过的实现:

public static Complex[] Dft(double[] data)
    {
        int length = data.Length;
        Complex[] result = new Complex[length];

        for (int k = 1; k <= length; k++)
        {
            Complex c = Complex.Zero;
            for (int n = 1; n <= length; n++)
            {
                c += Complex.FromPolarCoordinates(data[n-1], (-2 * Math.PI * n * k) / length);
            }
            result[k-1] =  1 / Math.Sqrt(length) * c;
        }
        return result;
    }
Run Code Online (Sandbox Code Playgroud)

这些是我得到的结果 Dft({2,3,4})

替代文字

好吧,看起来还不错,因为那些是我期望的值.我发现只有一件事令人困惑.这一切都与双打的四舍五入有关.

首先,为什么前两个数字不完全相同(0,8660..443 8)vs(0,8660..443).为什么它不能计算零,你期望它.我知道2.8E-15非常接近于零,但事实并非如此.

任何人都知道这些,边缘的错误是如何发生的,如果我能够并且想要对它做些什么.

似乎没有真正的问题,因为它只是小错误.但是,如果您要比较2个值,那么如何处理这些舍入误差.

5,2 + 0i != 5,1961524 …
Run Code Online (Sandbox Code Playgroud)

c# floating-point double fft

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

为什么 Swift 中的 FFT 与 Python 中的不同?

我正在尝试使用 Accelerate 框架将一些 python numpy 代码移植到 Swift。

在python中我写

import numpy as np
frames = np.array([1.0, 2.0, 3.0, 4.0])
fftArray = np.fft.fft(frames, len(frames))
print(fftArray)
Run Code Online (Sandbox Code Playgroud)

输出是:

[10.+0.j -2.+2.j -2.+0.j -2.-2.j]
Run Code Online (Sandbox Code Playgroud)

所以在 Swift 中,我试图像这样计算 FFT:

import Foundation
import Accelerate

    func fftAnalyzer(frameOfSamples: [Float]) {
        // As above, frameOfSamples = [1.0, 2.0, 3.0, 4.0]            

        let analysisBuffer = frameOfSamples
        let frameCount = frameOfSamples.count

        var reals = [Float]()
        var imags = [Float]()
        for (idx, element) in analysisBuffer.enumerated() {
            if idx % 2 == 0 {
                reals.append(element)
            } …
Run Code Online (Sandbox Code Playgroud)

python signal-processing fft accelerate-framework swift

1
推荐指数
2
解决办法
870
查看次数

将字符串转换为另一种数据类型,Python

我有字符串"(0, 0, 0)".我希望能够将其转换为元组.内置tuple函数不适用于我的目的,因为它将每个字符视为单个项目.我希望能够"(0, 0, 0)"(0, 0, 0)编程方式转换.

python string types tuples

0
推荐指数
1
解决办法
374
查看次数

简单的Python 3.2.2程序中的语法错误

这段代码是python上的一本书中的示例代码.这是一个输入整数并显示整数的总和,总数和平均值的简单程序.但是,当我尝试运行代码时,我在第18行(冒号)收到语法错误.这段代码对我来说非常好.有任何想法吗?

print("type integers, each followed by Enter; or just Enter to finish")

total = 0
count = 0

while True:
    line = input("integer: "
    if line:
        try:
            number = int(line)
        except ValueError as err:
            print(err)
            continue
    total += number
    count += 1
    else:
        break
if count:
    print("count=", count, "total =", total, "mean =", total / count)
Run Code Online (Sandbox Code Playgroud)

当我尝试运行它时,我收到一个错误:

  File "./intproj.py", line 18
    else:
       ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我在Ubuntu 11.10上使用IDLE作为IDE和python 3.2.2


更新的代码:

print("type integers, each followed by Enter; or just Enter to …
Run Code Online (Sandbox Code Playgroud)

python syntax

0
推荐指数
1
解决办法
3543
查看次数

使用NSArray的"for x in"语法

我有这样的指示:

[self someMethod:CGPointMake(50, 50)];
[self someMethod:CGPointMake(270, 50)];
[self someMethod:CGPointMake(50, 360)];
[self someMethod:CGPointMake(270, 360)];
...
Run Code Online (Sandbox Code Playgroud)

我想使用NSArray重构代码,如下所示:

NSArray items = [NSArray initWithObjects:
                  CGPointMake(50, 50),
                  CGPointMake(270, 50),
                  CGPointMake(50, 360),
                  CGPointMake(270, 360),
                  ...
                  nil];
Run Code Online (Sandbox Code Playgroud)

我不知道正确的语法,有人可以帮助我吗?我试过这个,但XCode告诉我"Selector元素类型CGPoint不是一个有效的对象":

CGPoint point = [CGPoint alloc];

for (point in items) {
    [self someMethod:point];
}
Run Code Online (Sandbox Code Playgroud)

refactoring objective-c nsarray

0
推荐指数
1
解决办法
1227
查看次数