Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Trả về tích chập tuyến tính rời rạc của hai chuỗi một chiều với chế độ trong Python


Để trả về tích chập tuyến tính rời rạc của hai chuỗi một chiều, hãy sử dụng phương thức numpy.convolve() trong Python Numpy. Toán tử tích chập thường được thấy trong xử lý tín hiệu, nơi nó mô hình hóa hiệu ứng của một hệ thống tuyến tính bất biến theo thời gian lên một tín hiệu. Trong lý thuyết xác suất, tổng của hai biến ngẫu nhiên độc lập được phân phối theo tích chập của các phân phối riêng lẻ của chúng. Nếu v dài hơn a, các mảng được hoán đổi trước khi tính toán.

Phương thức trả về tích chập tuyến tính rời rạc của a và v. Tham số thứ nhất a (N,) là mảng đầu vào một chiều đầu tiên. Tham số thứ hai v (M,) là mảng đầu vào một chiều thứ hai. Tham số thứ ba mode là tùy chọn, với các giá trị 'full', 'valid', 'same'. Chế độ 'valid' trả về đầu ra có độ dài max(M, N) - min(M, N) + 1. Tích chập chỉ được cho tại các điểm nơi các tín hiệu chồng chéo hoàn toàn. Các giá trị ngoài biên độ tín hiệu không có ảnh hưởng.

Chế độ mặc định là 'full'. Điều này trả về tích chập tại mỗi điểm chồng chéo, với hình dạng đầu ra (N+M-1,). Tại các điểm cuối của tích chập, các tín hiệu không chồng chéo hoàn toàn, và các hiệu ứng biên có thể được thấy.

Các bước thực hiện

Trước tiên, nhập các thư viện cần thiết:

import numpy as np

Tạo hai mảng numpy một chiều bằng phương thức array():

arr1 = np.array([1, 2, 3])
arr2 = np.array([0, 1, 0.5])

Hiển thị các mảng:

print("Mảng 1...\n", arr1)
print("\nMảng 2...\n", arr2)

Kiểm tra số chiều của cả hai mảng:

print("\nSố chiều của Mảng 1...\n", arr1.ndim)
print("\nSố chiều của Mảng 2...\n", arr2.ndim)

Kiểm tra hình dạng của cả hai mảng:

print("\nHình dạng của Mảng 1...\n", arr1.shape)
print("\nHình dạng của Mảng 2...\n", arr2.shape)

Để trả về tích chập tuyến tính rời rạc của hai chuỗi một chiều, sử dụng phương thức numpy.convolve():

print("\nKết quả....\n", np.convolve(arr1, arr2, mode='full'))

Ví dụ hoàn chỉnh

import numpy as np

# Tạo hai mảng numpy một chiều bằng phương thức array()
arr1 = np.array([1, 2, 3])
arr2 = np.array([0, 1, 0.5])

# Hiển thị các mảng
print("Mảng 1...\n", arr1)
print("\nMảng 2...\n", arr2)

# Kiểm tra số chiều của cả hai mảng
print("\nSố chiều của Mảng 1...\n", arr1.ndim)
print("\nSố chiều của Mảng 2...\n", arr2.ndim)

# Kiểm tra hình dạng của cả hai mảng
print("\nHình dạng của Mảng 1...\n", arr1.shape)
print("\nHình dạng của Mảng 2...\n", arr2.shape)

# Tích chập tuyến tính rời rạc
print("\nKết quả....\n", np.convolve(arr1, arr2, mode='full'))

Đầu ra

Mảng 1...
 [1 2 3]
Mảng 2...
 [0. 1. 0.5]
Số chiều của Mảng 1...
 1
Số chiều của Mảng 2...
 1
Hình dạng của Mảng 1...
 (3,)
Hình dạng của Mảng 2...
 (3,)
Kết quả....
 [0. 1. 2.5 4. 1.5]