Tôi đang cố gắng triển khai lại một trong các hộp công cụ MATLAB. họ sử dụng fft ở đó. khi tôi thực hiện cùng một thao tác trên cùng một dữ liệu, tôi nhận được kết quả khác với các kết quả từ MATLAB. Chỉ cần có một cái nhìn:FFT trong Matlab và numpy/scipy cho kết quả khác nhau
MATLAB:
Msig =
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 1 0 0
0 0 0 0
fft(Msig.')
Columns 1 through 4
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
Columns 5 through 6
1.0000 0
0 - 1.0000i 0
-1.0000 0
0 + 1.0000i 0
PYTHON:
Msig=
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 1., 0., 0.],
[ 0., 0., 0., 0.]])
np.fft.fft(Msig.transpose())
array([[ 0.0 +0.00000000e+00j, 0.0 +0.00000000e+00j,
0.0 +0.00000000e+00j, 0.0 +0.00000000e+00j,
0.0 +0.00000000e+00j, 0.0 +0.00000000e+00j],
[ 1.0 +0.00000000e+00j, -0.5 +8.66025404e-01j,
-0.5 -8.66025404e-01j, 1.0 -3.88578059e-16j,
-0.5 +8.66025404e-01j, -0.5 -8.66025404e-01j],
[ 0.0 +0.00000000e+00j, 0.0 +0.00000000e+00j,
0.0 +0.00000000e+00j, 0.0 +0.00000000e+00j,
0.0 +0.00000000e+00j, 0.0 +0.00000000e+00j],
[ 0.0 +0.00000000e+00j, 0.0 +0.00000000e+00j,
0.0 +0.00000000e+00j, 0.0 +0.00000000e+00j,
0.0 +0.00000000e+00j, 0.0 +0.00000000e+00j]])
Điều tốt nhất tôi có thể nhận được nếu tôi gây rối với các thông số (trục, vv) của np. fft.fft()/np.fft.fft2()/np.fft.fftn() có cùng giá trị nhưng được dịch chuyển. không may thay đổi hướng dẫn sử dụng không phải là một lựa chọn gây ra kích thước và hình dạng của ma trận Msig khác nhau tùy thuộc vào các thông số đầu vào.
bạn có bất kỳ đầu mối nào để giải quyết vấn đề này, nguyên nhân có thể là gì?
Đó transpose là chỉ có đối với một số lý do không liên quan, phải không? – Ali