Estou tentando traduzir o comando
[h(:,m), w] = freqz(fliplr(b), fliplr(a),2048); % fliplr --> freqz works on powers of z^-1
de Octave para Python (w/ scipy (freqz) e numpy (fliplr)), mas resulta em erro quando escrito como está :
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.
Quais pontos para a função fliplr parecem funcionar de maneira diferente em comparação com a função fliplr do Octave.
Aqui estão minhas matrizes b e 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]
Eu também tentei fatiar w/ ou w/o flipping:
[h[:, m], w] = freqz(np.flip(b[0:N]), np.flip(a[0:N]), 2048)
qual dos dois passa na compilação, mas os gráficos parecem estranhos.
Alguma sugestão de tradução?
Seus arrays parecem ser de classificação 1 (isto é, unidimensionais). O erro do python está dizendo que você está tentando virar a segunda dimensão, mas não há uma. Reformule suas matrizes para torná-las 2d. Presumivelmente, você deseja que os valores se espalhem ao longo das colunas, para que o tamanho das linhas seja 1 quando você remodelar. (portanto, dada a forma como o reshape funciona, você pode passar -1 para a dimensão que deseja calcular automaticamente, ou seja, numpy.reshape( b, (1, -1) )