首页 > 解决方案 > 使用 Octave 与 Python 计算极对时的不同结果

问题描述

我正在尝试使用 Octave 5.1.10 和 Python 3.8 计算极对。

八度代码:

wc=1
n=4
s={n}
G=1

function poles (n, wc, G)
    s={n}
    for k =1:n
    s{k}=wc*e^((j*(2*k+n-1)*pi)/(2*n))
    endfor
endfunction

输出是:

s =
{
  [1,1] = -0.38268 + 0.92388i
  [1,2] = -0.92388 + 0.38268i
  [1,3] = -0.92388 - 0.38268i
  [1,4] = -0.38268 - 0.92388i
}

Python代码:

import numpy as np
import math

wc=1  
n=4   
G=1   

def poles (n, wc, G):
    import math
    s=[] #contains the complex polpairs
    e=math.e
    pi=math.pi
    for k in range(n):
      s.append(wc*e**((1j*(2*k+n-1)*pi)/(2*n)))
    return s

返回

s=[
(0.38268343236508984 + 0.9238795325112867j), 
(-0.3826834323650897 + 0.9238795325112867j), 
(-0.9238795325112867 + 0.3826834323650899j), 
(-0.9238795325112868 - 0.38268343236508967j)]

有人可以向我解释为什么这两个输出不同吗?

标签: python-3.xoctave

解决方案


在您的八度循环中,k 取值从 1 到 4。

在你的 python 循环中, k 取值从 0 到 3

如果您希望在 python 循环中具有相同的行为,请更改

for k in range(4):

for k in range(1, 5):

推荐阅读