כיצד ליישם Convolution ב- MATLAB מבלי להשתמש בפונקציה

תקריב של משוואה מתמטית

MATLAB מכיל פונקציית קונבולציה בנויה מראש.

קרדיט תמונה: Thinkstock Images/Comstock/Getty Images

קונבולציה היא פעולה מתמטית הממזגת שתי פונקציות ביחס לחפיפה של פונקציה אחת כשהיא מוזזת על פני אחרת. למרות ש-MATLAB מכיל פונקציית קונבולציה בנויה מראש, אפשר לחשב את אינטגרל הקונבולציה הבדיד בעצמך. הקונבולולוציה הבדידה של שתי פונקציות f ו-g מוגדרת כסכום על פני הטווח 0 עד j של f (j) * g (k-j).

שלב 1

הגדר שני וקטורים, f ו-g, המכילים את שתי הפונקציות שברצונך לסבך. האורכים של f ו-g לא חייבים להיות שווים. אורך התוצאה של הקונבולולוציה, k, יהיה אחד פחות מסכום האורך של f ו-g:

סרטון היום

m = אורך (f); n = אורך (g); k = m + n - 1;

שלב 2

הגדירו את הטווח j שבו תתרחש הקונבולולוציה. הערך של j הוא הטווח שבו כתובות המשנה של שתי הפונקציות שיש לסבך, f (j) ו-g (k+1-n), חוקיות. הערך של 1 שנוסף ל-k הוא כדי להסביר את העובדה ש-MATLAB מתחיל לאינדקס וקטורים ב-1 ולא ב-0:

j = max (1,k+1-n):min (k, m)

שלב 3

הקצו מראש מקום לתוצאה של הפיתול:

my_result = אפסים (k);

שלב 4

כתוב לולאת for כדי לחזור על ערכים של k:

עבור תוצאה_אינדקס = 1:k

שלב 5

חשב את הקונבולולוציה עבור כל הערכים של j:

my_result (k) = sum (f(j) .* g (k-j+1));

שלב 6

סגור את לולאת for עם הפקודה "סוף".