Tại sao phải tích chập, hay triết lý đằng sau tích chập là gì?


14

Tôi đang làm việc trong lĩnh vực phục hồi hình ảnh kỹ thuật số. Tôi đã đọc tất cả mọi thứ về tích chập, rằng, đối với một hệ thống LTI , nếu chúng ta biết đáp ứng xung của nó , thì chúng ta có thể tìm thấy đầu ra của nó bằng cách chỉ sử dụng tích chập giữa phản hồi đầu vào và xung.

Bất cứ ai có thể nói với tôi rằng triết lý chính đằng sau nó là gì? Kinh nghiệm của bạn với sẽ nói với tôi nhiều hơn là chỉ lướt internet về nó.



3
Tôi đánh giá thấp câu hỏi này bởi vì nó (hoặc các biến thể nhỏ của nó) đã liên tục được hỏi và trả lời trên trang web này dưới dạng trạng thái bình luận của pichenettes. Thay vào đó, bạn nên "lướt web" trên trang web này.
Dilip Sarwate

Câu trả lời:


13

Ý tưởng kết hợp

Giải thích yêu thích của tôi về chủ đề này là trong một trong những bài giảng của Brad Osgood về Biến đổi Fourier . Cuộc thảo luận về tích chập bắt đầu vào khoảng 36:00, nhưng toàn bộ bài giảng có bối cảnh bổ sung đáng xem.

Ý tưởng cơ bản là, khi bạn xác định một cái gì đó như Biến đổi Fourier, thay vì làm việc trực tiếp với định nghĩa mọi lúc, sẽ rất hữu ích để lấy được các thuộc tính cấp cao hơn giúp đơn giản hóa các phép tính. Ví dụ, một thuộc tính như vậy là phép biến đổi tổng của hai hàm bằng tổng của các phép biến đổi, nghĩa là

F{f+g}=F{f}+F{g}.

Điều đó có nghĩa là nếu bạn có một hàm với một biến đổi không xác định và nó có thể được phân tách thành tổng của các hàm với các biến đổi đã biết, về cơ bản bạn sẽ nhận được câu trả lời miễn phí.

Bây giờ, vì chúng ta có một danh tính cho tổng của hai biến đổi, nên đó là một câu hỏi tự nhiên để hỏi danh tính của sản phẩm của hai biến đổi là gì, tức là

F{f}F{g}= ?.

Nó chỉ ra rằng khi bạn tính toán câu trả lời, tích chập là những gì xuất hiện. Toàn bộ dẫn xuất được đưa ra trong video và vì câu hỏi của bạn chủ yếu là khái niệm, tôi sẽ không tóm tắt nó ở đây.

Ý nghĩa của việc tiếp cận tích chập theo cách này là nó là một phần nội tại của cách biến đổi Laplace (trong đó Fourier Tranform là một trường hợp đặc biệt) biến các phương trình vi phân thông thường hệ số hằng tuyến tính (LCCODE) thành phương trình đại số. Thực tế là một biến đổi như vậy có sẵn để làm cho khả năng phân tích của LCCODE là một phần lớn lý do tại sao chúng được nghiên cứu trong xử lý tín hiệu. Ví dụ: để trích dẫn Oppenheim và Schafer :

Bởi vì chúng tương đối dễ đặc trưng về mặt toán học và vì chúng có thể được thiết kế để thực hiện các chức năng xử lý tín hiệu hữu ích, nên lớp hệ thống bất biến dịch chuyển tuyến tính sẽ được nghiên cứu rộng rãi.

Vì vậy, một câu trả lời cho câu hỏi là nếu bạn đang sử dụng các phương thức biến đổi để phân tích và / hoặc tổng hợp các hệ thống LTI, thì sớm hay muộn, sự tích chập sẽ phát sinh (ngầm hoặc rõ ràng). Lưu ý rằng cách tiếp cận này để giới thiệu tích chập là rất chuẩn trong bối cảnh phương trình vi phân. Ví dụ, xem bài giảng MIT này của Arthur Mattuck . Hầu hết các bài thuyết trình đều trình bày tích phân tích chập mà không có nhận xét, sau đó rút ra các thuộc tính của nó (ví dụ như kéo nó ra khỏi mũ), hoặc hem và haw về hình thức lạ của tích phân, nói về lật và kéo, đảo ngược thời gian, v.v., v.v. .

Lý do tôi thích cách tiếp cận của giáo sư Osgood là vì nó tránh được tất cả các tsouris, cũng như cung cấp, theo tôi, cái nhìn sâu sắc về cách các nhà toán học có thể đến với ý tưởng này ngay từ đầu. Và tôi trích dẫn:

Tôi nói, "Có cách nào kết hợp F và G trong miền thời gian, để trong miền tần số, các phổ nhân lên, Fourier biến đổi nhân lên?" Và câu trả lời là, vâng, có, bởi tích phân phức tạp này. Nó không quá rõ ràng. Bạn sẽ không ra khỏi giường vào buổi sáng và viết nó xuống, và hy vọng rằng điều này sẽ giải quyết vấn đề đó. Làm thế nào để chúng ta có được nó? Bạn nói, giả sử vấn đề đã được giải quyết, hãy xem điều gì sẽ xảy ra, và sau đó chúng ta phải nhận ra khi nào là thời điểm để tuyên bố chiến thắng. Và đã đến lúc tuyên bố chiến thắng.

Bây giờ, là một nhà toán học đáng ghét, bạn che dấu vết của mình và nói, "Chà, đơn giản là tôi sẽ định nghĩa tích chập của hai hàm theo công thức này."

Hệ thống LTI

Trong hầu hết các văn bản DSP, tích chập thường được giới thiệu theo một cách khác (tránh mọi tham chiếu đến các phương thức biến đổi). Bằng cách biểu thị tín hiệu đầu vào tùy ý dưới dạng tổng các xung đơn vị được chia tỷ lệ và dịch chuyển,x(n)

(1)x(n)=k=x(k)δ(nk),

Ở đâu

(2)δ(n)={0,n01,n=0,

các thuộc tính xác định của các hệ thống bất biến thời gian tuyến tính dẫn trực tiếp một tổng tích chập liên quan đến đáp ứng xung . Nếu hệ thống được xác định bởi toán tử LTI L được biểu thị là y ( n ) = L [ x ( n ) ] , thì bằng cách áp dụng các thuộc tính lặp lại, cụ thể là tuyến tínhh(n)=L[ δ(n) ]Ly(n)=L[ x(n) ]

(3)L[ ax1(n)+bx2(n) ]Transform of the sum of scaled inputs=aL[ x1(n) ]+bL[ x2(n) ]Sum of scaled transforms,

và thời gian / thay đổi bất biến

(4)L[ x(n) ]=y(n) impliesL[ x(nk) ]=y(nk),

hệ thống có thể được viết lại thành

y(n)=L[k=x(k)δ(nk)]Tranform of the sum of scaled inputs=k=x(k)L[δ(nk)]Sum of scaled transforms=k=x(k)h(nk).Convolution with the impulse response

Đó là một cách rất chuẩn để trình bày tích chập, và đó là một cách hoàn hảo thanh lịch và hữu ích để thực hiện. Các dẫn xuất tương tự có thể được tìm thấy ở Oppenheim và Schafer , Proakis và Manolakis , Rabiner và Gold , và tôi chắc chắn nhiều người khác. Một số cái nhìn sâu sắc hơn [đi xa hơn những lời giới thiệu tiêu chuẩn] được đưa ra bởi Dilip trong câu trả lời xuất sắc của ông ở đây .

Tuy nhiên, lưu ý rằng sự phát sinh này có phần là một trò ảo thuật. Nhìn lại cách tín hiệu bị phân hủy trong , chúng ta có thể thấy rằng nó đã ở dạng tích chập. Nếu(1)

(fg)(n)f convolved with g=k=f(k)g(nk),

sau đó chỉ là x * δ . Bởi vì hàm delta là thành phần nhận dạng để tích chập, cho biết bất kỳ tín hiệu nào có thể được biểu thị ở dạng đó rất giống với việc nói bất kỳ số n nào cũng có thể được biểu thị là n + 0 hoặc n × 1 . Bây giờ, lựa chọn mô tả các tín hiệu theo cách đó là tuyệt vời bởi vì nó dẫn trực tiếp đến ý tưởng về đáp ứng xung - chỉ là ý tưởng về tích chập đã được "nung nấu" để phân tách tín hiệu.(1)xδnn+0n×1

Từ quan điểm này, tích chập thực chất liên quan đến ý tưởng về hàm delta (tức là nó là một hoạt động nhị phân có chức năng delta là thành phần nhận dạng của nó). Ngay cả khi không xem xét mối quan hệ của nó với tích chập, việc mô tả tín hiệu phụ thuộc chủ yếu vào ý tưởng của hàm delta. Vì vậy, câu hỏi sau đó trở thành, chúng ta đã lấy ý tưởng cho hàm delta ở đâu? Theo như tôi có thể nói, nó ít nhất là xa như bài báo của Fouri về Lý thuyết phân tích nhiệt, nơi nó xuất hiện ngầm. Một nguồn để biết thêm thông tin là bài viết này về Nguồn gốc và Lịch sử hình thành của Alejandro Domínguez.

Bây giờ, đó là hai trong số các cách tiếp cận chính cho ý tưởng trong bối cảnh của lý thuyết hệ thống tuyến tính. Một ủng hộ cái nhìn sâu sắc phân tích, và cái còn lại ủng hộ giải pháp số. Tôi nghĩ cả hai đều hữu ích cho một bức tranh đầy đủ về tầm quan trọng của tích chập. Tuy nhiên, trong trường hợp riêng biệt, bỏ qua hoàn toàn các hệ thống tuyến tính, có một ý nghĩa trong đó tích chập là một ý tưởng cũ hơn nhiều.

Phép nhân đa thức

Một bài trình bày hay về ý tưởng rằng tích chập rời rạc chỉ là phép nhân đa thức được đưa ra bởi Gilbert Strang trong bài giảng này bắt đầu vào khoảng 5:46. Từ quan điểm đó, ý tưởng hoàn toàn quay trở lại việc giới thiệu các hệ thống số vị trí (đại diện cho các số ngầm định là đa thức). Bởi vì biến đổi Z đại diện cho các tín hiệu là đa thức trong z, tích chập cũng sẽ phát sinh trong bối cảnh đó - ngay cả khi biến đổi Z được định nghĩa chính thức là toán tử trễ mà không cần phân tích phức tạp và / hoặc là trường hợp đặc biệt của Laplace Biến đổi .


cảm ơn ngài đã hướng dẫn vô giá, bạn vừa chỉ cho tôi cách làm đúng. Sự giúp đỡ này của bạn đã dạy tôi rằng làm thế nào để trở thành một người tốt bắt đầu cho người khác .... :)
Mayank Tiwari

Làm thế nào để sự trùng hợp tuyệt vời này giải thích rằng bạn cần phải thực hiện phép chập trong trường hợp anh ta hỏi? Tôi tin rằng trong mọi miền, có một hoạt động biến thành tích chập khi bạn hoàn nguyên các đối số thành miền thời gian. Có lẽ chúng ta cần phải thực hiện muiltiplication trong miền thời gian để nhận được phản hồi? Tại sao chúng ta nên nhân tần số thay vì quét thời gian?
Val

1
Xem xét rằng OP đã hỏi một câu hỏi về vai trò của các xung liên quan đến các hệ thống LTI , tôi đọc câu hỏi khi anh ta sử dụng nó như một ví dụ để thúc đẩy một câu hỏi về sự kết hợp đến từ đâu - không nhất thiết là vai trò của nó trong việc tính toán xung lực đáp ứng mỗi se. Có phải đó là những gì bạn đang hỏi?
datageist

1
Nói rằng chúng ta cần tích chập bởi vì nó giống hệt với phép nhân phạm vi âm thanh vô nghĩa với tôi trong trường hợp chúng ta không biết tại sao chúng ta cần phép nhân phạm vi. Khi chúng ta được đưa ra đáp ứng xung, điều này có nghĩa là miền thời gian và tích chập hơn là bất kỳ phép thuật đen nào trong cơ sở phạm lỗi. Tôi không nghĩ rằng tham chiếu đến câu hỏi đó có thể làm rõ điều này. Trong mọi trường hợp, sẽ không tốt khi đưa ra "câu trả lời cục bộ" cho các câu hỏi chung, cơ bản (tức là phylosophical). Q & A phải hữu ích cho khách truy cập trong tương lai.
Val

Nhận xét của Val ở trên là đúng mục tiêu. Tôi tự hỏi làm thế nào các hệ thống tuyến tính hoạt động trước khi biến đổi Fourier được phát minh / phát hiện. Làm thế nào trên trái đất một đối tượng vô tri vô giác phát hiện ra một công thức phức tạp như vậy?
Dilip Sarwate

6

Tôi đã từng đưa ra câu trả lời trong trang thảo luận tích chập Wikipedia, trong đó hỏi về cơ bản cùng một câu hỏi: Tại sao thời gian đảo ngược? . Triết lý là bạn áp dụng một xung đơn tại thời điểm 0 cho bộ lọc của mình và ghi lại phản hồi của nó tại thời điểm 0,1,2,3,4, khắc. Về cơ bản, phản hồi sẽ trông giống như một hàm, h (t). Bạn có thể vẽ nó. Nếu xung cao gấp n lần / cao hơn, xung phản hồi sẽ cao hơn theo tỷ lệ (điều này là do bộ lọc tuyến tính luôn luôn được giả định). Bây giờ, tất cả DSP (và không chỉ DSP) là về những gì xảy ra khi bạn áp dụng bộ lọc cho tín hiệu của mình? Bạn biết đáp ứng xung. Tín hiệu của bạn (đặc biệt là kỹ thuật số) không gì khác hơn là một chuỗi các xung có chiều cao x (t). Nó có chiều cao / giá trị tại thời điểm txt. Các hệ thống tuyến tính thật tuyệt vời khi bạn có thể tính tổng các đầu ra cho mỗi xung đầu vào như vậy để có được hàm phản hồi y (t) cho hàm đầu vào x (t). Bạn biết rằng xung đầu ra y (t = 10) phụ thuộc vào đầu vào ngay lập tức x (10), đóng góp h (0) * x (10). Nhưng cũng có sự đóng góp, x (9) * h (1), cho đầu ra từ xung trước đó, x (9) và đóng góp từ các giá trị đầu vào thậm chí trước đó. Bạn thấy, khi bạn thêm đóng góp từ các đầu vào trước đó, đối số một lần giảm trong khi đối số khác tăng. Bạn MAC tất cả các đóng góp vào y (10) = h (0) * x (10) + h (1) * x (9) + h (2) * x (8) + Lỗi, đó là một tích chập.

Bạn có thể nghĩ các hàm y (t), h (t) và x (t) là các vectơ. Ma trận là toán tử trong đại số tuyến tính. Họ lấy vector đầu vào (một dãy số) và tạo ra vector đầu ra (một chuỗi số khác). Trong trường hợp này, y là tích của ma trận chập với vectơ x,

y=[y0y1y2]=[h000h1h00h2h1h0][x0x1x2]=Hx

Bây giờ, vì tích chập là ma trận Toeplitz , nó có hàm riêng Fourier và do đó, toán tử tích chập (toán tử tuyến tính được biểu diễn bằng ma trận, nhưng ma trận cũng phụ thuộc vào cơ sở) là một ma trận đường chéo đẹp trong miền phạm vi,

Y=[Y0Y1Y2]=[λ0000λ1000λ2][X0X1X2]=diag(H)X

Lưu ý, nhiều số 0 hơn và do đó, tính toán đơn giản hơn nhiều. Kết quả này được gọi là "định lý tích chập" và, như phản hồi đầu tiên đã trả lời, nó đơn giản hơn nhiều trong miền fourier. Nhưng, đây là triết lý đằng sau "định lý tích chập", cơ sở phạm vi và các toán tử tuyến tính hơn là nhu cầu phổ biến để tích chập.

Thông thường, bạn thực hiện tích chập vì bạn có tín hiệu đầu vào, đáp ứng xung và yêu cầu đầu ra trong miền thời gian. Bạn có thể chuyển đổi thành không gian fourier để tối ưu hóa tính toán. Nhưng, nó không thực tế đối với các bộ lọc đơn giản, như tôi đã thấy trong DSPGuide . Nếu bộ lọc của bạn trông giống , không có ý nghĩa gì khi chuyển đổi phạm vi. Bạn chỉ cần thực hiện n phép nhân, để tính toán mọi y. Nó cũng là tự nhiên cho thời gian thực. Trong thời gian thực, bạn chỉ tính một y mỗi lần. Bạn có thể nghĩ về biến đổi Fourier nếu bạn có tín hiệu x được ghi lại và bạn cần tính toán toàn bộ vectơ y cùng một lúc. Điều này sẽ cần các hoạt động MAC NxN và Fourier có thể giúp giảm chúng thành N log (N).y[currentTime]=k1x[time1]+k2x(time2)+by[time1]


Một vài lưu ý: làm thế nào bạn có thể mở rộng mô tả này cho trường hợp thời gian liên tục (rõ ràng xuất hiện trước trường hợp thời gian rời rạc)? Ngoài ra, có nhiều ứng dụng thời gian thực sử dụng các phương pháp dựa trên biến đổi Fourier để tích chập nhanh. Nói rằng các đầu ra luôn được tính toán cùng một lúc cho các ứng dụng thời gian thực không đúng.
Jason R

Như đã nói, công việc tốt đẹp chỉ ra thực tế rằng cấu trúc Toeplitz của ma trận tích chập ngụ ý rằng nó thừa nhận một biểu diễn đường chéo dưới cơ sở Fourier.
Jason R

Có, có thể bạn sử dụng transfrom fourier trong thời gian thực. Tôi không phải là chuyên gia DSP. Tôi chỉ bày tỏ ý tưởng (mà tôi đã nhận được từ thực tiễn khan hiếm của mình và đọc DSPGuide). Dù sao, tôi muốn làm nổi bật rằng fourier không liên quan gì đến triết lý của sự chập chững. Có lẽ tôi cần phải loại bỏ tất cả các cuộc thảo luận liên quan đến phạm lỗi, vì nó gây mất tập trung. Convolution là tự nhiên trong miền thời gian và cần thiết mà không cần bất kỳ Fourier nào, bất kể Fourier tuyệt đến mức nào.
Val

Thực tế là trường hợp liên tục xuất hiện trước lịch sử, không đòi hỏi chúng ta rằng chúng ta nên học theo thứ tự tương tự. Tôi nghĩ rằng việc hiểu triết lý của nhiều thứ dễ dàng hơn, bao gồm cả chập, bắt đầu với trường hợp rời rạc (và chúng ta đang ở trong D SP.se để thực hiện phương pháp này). Trong trường hợp liên tục, một loạt các hoạt động MAC được chuyển thành tích hợp, vì chúng tôi làm cho các xung của chúng tôi ngày càng ngắn hơn. BTW, tích hợp bản thân được hiểu là một trường hợp giới hạn của tổng rời rạc: f ( x ) d x = lim d x 0 ( Σf(x)dx . Vì vậy, nó không thể đến trước khi tổng kết rời rạc. f(x)dx=limdx0(f(x)dx)
Val

@JasonR Trong cài đặt liên tục, bạn sẽ thay thế ma trận Toeplitz bằng toán tử bất biến thay đổi. Sau đó, bạn có thể chỉ ra rằng các hàm cơ sở Fourier chéo hóa toán tử này.
lp251

3

Mặc dù các câu trả lời trước đây thực sự tốt, tôi muốn thêm quan điểm của tôi về tích chập, nơi tôi chỉ làm cho nó dễ hình dung hơn do các số liệu.

Người ta tự hỏi liệu có bất kỳ phương pháp nào thông qua đó tín hiệu đầu ra của một hệ thống có thể được xác định cho một tín hiệu đầu vào nhất định. Convolution là câu trả lời cho câu hỏi đó, với điều kiện hệ thống là tuyến tính và bất biến theo thời gian (LTI).

Giả sử rằng chúng ta có một tín hiệu tùy ý . Sau đó, s [ n ] có thể được phân tách thành một tổng số các xung đơn vị được dịch chuyển thông qua các lý do sau đây. Nhân s [ n ] với một xung đơn vị được dịch chuyển bởi m mẫu vì δ [ n - m ] n không bằng m và bằng 1 khi ns[n]s[n]s[n]mδ[nm] . Vì bằng 0 ở mọi nơi ngoại trừ tại n = m , điều này sẽ nhân tất cả các giá trị của s [ n ] với 0 khiδ[nm]n=ms[n]nmn bằng . Vì vậy, chuỗi kết quả sẽ có một xung tại n = m với giá trị của nó bằng s [ m ] . Quá trình này được minh họa rõ ràng trong hình dưới đây.mn=ms[m]

enter image description here

s[n]δ[nm]=s[m]δ[nm]
m
s[n]δ[nm]=s[m]δ[nm]

s[m]<m<s[n]

s[n]=+s[2]δ[n+2]+s[1]δ[n+1]+s[0]δ[n]+s[1]δ[n1]+s[2]δ[n2]+=m=s[m]δ[nm]

In summary, the above equation states that s[n] can be written as a summation of scaled unit impulses, where each unit impulse δ[nm] has an amplitude s[m]. An example of such a summation is shown in Figure below.

enter image description here

Consider what happens when it is given as an input to an LTI system with an impulse response h[n].

enter image description here

This leads to an input-output sequence as

enter image description here

During the above procedure, we have worked out the famous convolution equation that describes the output r[n] for an input s[n] to an LTI system with impulse response h[n].

Convolution is a very logical and simple process but many DSP learners can find it confusing due to the way it is explained. We will describe a conventional method and another more intuitive approach.

Conventional Method


Most textbooks after defining the convolution equation suggest its implementation through the following steps. For every individual time shift n,

[Flip] Arranging the equation as r[n]=m=s[m]h[m+n], consider the impulse response as a function of variable m, flip h[m] about m=0 to obtain h[m].

[Shift] To obtain h[m+n] for time shift n, shift h[m] by n units to the right for positive n and left for negative n.

[Multiply] Point-wise multiply the sequence s[m] by sequence h[m+n] to obtain a product sequence s[m]h[m+n].

[Sum] Sum all the values of the above product sequence to obtain the convolution output at time n.

[Repeat] Repeat the above steps for every possible value of n.

An example of convolution between two signals s[n]=[211] and h[n]=[112] is shown in Figure below, where the result r[n] is shown for each n.

Note a change in signal representation above. The actual signals s[n] and h[n] are a function of time index n but the convolution equation denotes both of these signals with time index m. On the other hand, n is used to represent the time shift of h[m] before multiplying it with s[m] point-wise. The output r[n] is a function of time index n, which was that shift applied to h[m].

enter image description here

Next, we turn to the more intuitive method where flipping a signal is not required.

Intuitive Method


There is another method to understand convolution. In fact, it is built on the derivation of convolution equation, i.e., find the output r[n] as

r[n] = +s[2]h[n+2] +s[1]h[n+1] +s[0]h[n] + s[1]h[n1] + s[2]h[n2] +
Let us solve the same example as in the above Figure, where s[n]=[2 11] and h[n]=[112]. This is shown in Table below.

enter image description here

Such a method is illustrated in Figure below. From an implementation point of view, there is no difference between both methods.

enter image description here

To sum up, convolution tells us how an LTI system behaves in response to a particular input and thanks to intuitive method above, we can say that convolution is also multiplication in time domain (and flipping the signal is not necessary), except the fact that this time domain multiplication involves memory. To further understand at a much deeper level where flipping comes from, and what happens in frequency domain, you can download a sample section from my book here.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.