我正在尝试翻译命令
[h(:,m), w] = freqz(fliplr(b), fliplr(a),2048); % fliplr --> freqz works on powers of z^-1
从 Octave 到 Python(w/ scipy (freqz) 和 numpy (fliplr)),但是,按原样编写时会导致错误:
File "<__array_function__ internals>", line 180, in fliplr
File "/home/xxxx/yyyy/venv/lib/python3.8/site-packages/numpy/lib/twodim_base.py", line 98, in fliplr
raise ValueError("Input must be >= 2-d.")
ValueError: Input must be >= 2-d.
指向fliplr
函数的工作方式似乎与 Octave 的 Fliplr 函数有所不同。 这是我的
b 和 a 数组:
b= [ 1.01063287e+00 -1.46490341e+01 9.94030209e+01 -4.19168764e+02
1.22949513e+03 -2.66000588e+03 4.39112431e+03 -5.64225597e+03
5.70320516e+03 -4.55022454e+03 2.85602975e+03 -1.39550096e+03
5.20372994e+02 -1.43160328e+02 2.74037105e+01 -3.26098385e+00
1.81735269e-01]
a= [ 1.00000000e+00 -1.45159238e+01 9.86464912e+01 -4.16614074e+02
1.22391361e+03 -2.65216678e+03 4.38533779e+03 -5.64421414e+03
5.71487734e+03 -4.56742504e+03 2.87187255e+03 -1.40575405e+03
5.25150201e+02 -1.44741759e+02 2.77584882e+01 -3.30950845e+00
1.84797453e-01]
我也尝试过切片或不翻转:
[h[:, m], w] = freqz(np.flip(b[0:N]), np.flip(a[0:N]), 2048)
两者中哪一个都通过了编译,但是,情节看起来很奇怪。
有翻译方面的建议吗?