Tôi đang tạo 2D DCT-II trong labview nhưng muốn có thể kiểm tra đầu ra của tôi là chính xác. SciPy có chức năng DCT đẹp mặc định là DCT-II nhưng là 1D.Sử dụng chức năng DCT SciPy để tạo 2D DCT-II
Tôi muốn làm cho nó hoạt động cho một mảng 2D. Để làm điều này, DCT phải được áp dụng cho các cột và sau đó DCT phải được áp dụng lại cho các hàng của kết quả này.
Tôi không chắc chắn chức năng nào tôi muốn sử dụng để thực hiện việc này. Tôi đã cố gắng np.rot90 mà quay mảng NumPy 90 độ chống chiều kim đồng hồ như sau:
import numpy as np
from scipy.fftpack import dct
a = np.array([[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0],
[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0],
[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0],
[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0],
[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0],
[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0],
[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0],
[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0]])
b = dct(np.rot90(dct(a),3))
Tuy nhiên này kết quả đầu ra như sau:
array([[ 1152. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ],
[ -412.30867345, 0. , 0. , 0. ,
0. , 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ],
[ -43.10110726, 0. , 0. , 0. ,
0. , 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ],
[ -12.85778584, 0. , 0. , 0. ,
0. , 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ],
[ -3.24494866, 0. , 0. , 0. ,
0. , 0. , 0. , 0. ]])
Tôi nghĩ rằng rot90 không phải là chức năng quyền làm những gì Tôi muốn làm, có lẽ có một cái tốt hơn?