Python hoặc bất kỳ mô-đun nào của nó có tương đương với hàm conv2 của MATLAB không? Cụ thể hơn, tôi quan tâm đến một cái gì đó thực hiện cùng một tính toán như conv2(A, B, 'same')
trong MATLAB.Có tương đương Python của hàm conv2 của MATLAB không?
Trả lời
Có vẻ như scipy.signal.convolve2d là những gì bạn đang tìm kiếm.
scipy.ndimage.convolve
thực hiện theo thứ nguyên n.
do đó, không 'scipy.signal.convolve'? – endolith
Bạn phải cung cấp bù đắp cho từng thứ nguyên không phải đơn để tái tạo kết quả của conv2 của Matlab. Một thực hiện đơn giản hỗ trợ tùy chọn 'cùng', chỉ, có thể được thực hiện như thế này
import numpy as np
from scipy.ndimage.filters import convolve
def conv2(x,y,mode='same'):
"""
Emulate the function conv2 from Mathworks.
Usage:
z = conv2(x,y,mode='same')
TODO:
- Support other modes than 'same' (see conv2.m)
"""
if not(mode == 'same'):
raise Exception("Mode not supported")
# Add singleton dimensions
if (len(x.shape) < len(y.shape)):
dim = x.shape
for i in range(len(x.shape),len(y.shape)):
dim = (1,) + dim
x = x.reshape(dim)
elif (len(y.shape) < len(x.shape)):
dim = y.shape
for i in range(len(y.shape),len(x.shape)):
dim = (1,) + dim
y = y.reshape(dim)
origin =()
# Apparently, the origin must be set in a special way to reproduce
# the results of scipy.signal.convolve and Matlab
for i in range(len(x.shape)):
if ((x.shape[i] - y.shape[i]) % 2 == 0 and
x.shape[i] > 1 and
y.shape[i] > 1):
origin = origin + (-1,)
else:
origin = origin + (0,)
z = convolve(x,y, mode='constant', origin=origin)
return z
Trong khi câu trả lời khác đã đề cập đến scipy.signal.convolve2d
như tương đương, tôi thấy rằng các kết quả khác nhau khi sử dụng mode='same'
.
Trong khi kết quả của các bức ảnh conv2
của Matlab ở phía dưới và bên phải của hình ảnh, scipy.signal.convolve2d
có cùng các tạo tác ở trên cùng và bên trái của hình ảnh.
Xem những liên kết này cho lô cho thấy hành vi (không đủ uy tín để gửi hình ảnh trực tiếp):
Upper left corner of convoluted Barbara
Lower right corner of convoluted Barbara
Các wrapper sau đây có thể không phải là rất hiệu quả, nhưng giải quyết vấn đề trong trường hợp của tôi bằng cách xoay cả hai mảng đầu vào và mảng đầu ra, từng mảng 180 độ:
import numpy as np
from scipy.signal import convolve2d
def conv2(x, y, mode='same')
return np.rot90(convolve2d(np.rot90(x, 2), np.rot90(y, 2), mode=mode), 2)
- 1. Python tương đương với hàm "ismember" của MATLAB
- 2. Mathematica có hàm tương đương với hàm "duy nhất" của Matlab
- 3. Có tương đương với hàm phạm vi Python trong MATLAB không?
- 4. MATLAB tương đương với String.Join Python()
- 5. Tương đương với hàm lambda của Python trong Java?
- 6. Tương đương với hình ảnh của MATLAB trong matplotlib?
- 7. Tương đương TreeSet của Java tương đương với Python?
- 8. Python tương đương với IFNULL của MySQL
- 9. Python tương đương với Mclapply của R()
- 10. Numpy tương đương với chức năng tìm kiếm của Matlab?
- 11. Tương đương Python của compareTo của Java()
- 12. có Java tương đương với defaultdict của Python không?
- 13. R tương đương với chức năng lọc của MATLAB
- 14. Có hàm PHP tương đương với Python os.path.normpath() không?
- 15. Có tương đương với giá trị của R() cho Matlab không?
- 16. R có tương đương với "repr" của Python (hay "prin1-to-string" của Lisp) không?
- 17. tương đương của C++ std :: set trong Matlab
- 18. Tương đương C++ của hàm băm_hmac của PHP là gì?
- 19. Java tương đương với struct.pack của Python?
- 20. Python tương đương với memory_get_usage() của PHP?
- 21. Có tương đương Java của SignalR không?
- 22. java của() tương đương trong python
- 23. Có tương đương với chức năng MATLAB bsxfun trong python không?
- 24. Tương đương của Python là "perl -V"
- 25. Tương đương Java cho str.strip của Python()
- 26. Python tương đương với 'method_missing' của Ruby '
- 27. Tương đương của Lisp tương đương với \ r bên trong hàm định dạng?
- 28. Có tương đương trong C++ của hàm explode() của PHP không?
- 29. python tương đương tương đương
- 30. Có scala tương đương với python của danh sách hiểu
xin lỗi, bỏ lỡ n-d part – Anycorn
@aaa cá chép - Không sao cả! Cảm ơn anyway – Ryan