MATLAB มีฟังก์ชัน Convolution ที่สร้างไว้ล่วงหน้า
เครดิตรูปภาพ: รูปภาพ Thinkstock / รูปภาพ Comstock / Getty
Convolution เป็นการดำเนินการทางคณิตศาสตร์ที่ผสมผสานสองฟังก์ชันที่สัมพันธ์กับการทับซ้อนของฟังก์ชันหนึ่งขณะที่เลื่อนไปทับอีกฟังก์ชันหนึ่ง แม้ว่า MATLAB จะมีฟังก์ชันการบิดตัวที่สร้างไว้ล่วงหน้า แต่ก็สามารถคำนวณอินทิกรัลการบิดแบบแยกส่วนได้ด้วยตนเอง การบิดแบบไม่ต่อเนื่องของสองฟังก์ชัน f และ g ถูกกำหนดเป็นผลรวมในช่วง 0 ถึง j ของ f (j) * g (k-j)
ขั้นตอนที่ 1
กำหนดเวกเตอร์สองตัวคือ f และ g ซึ่งมีฟังก์ชันสองฟังก์ชันที่คุณต้องการรวมเข้าด้วยกัน ความยาวของ f และ g ไม่ต้องเท่ากัน ความยาวของผลลัพธ์ของการบิด k จะน้อยกว่าผลรวมของความยาวของ f และ g หนึ่งอัน:
วีดีโอประจำวันนี้
ม. = ความยาว (ฉ); n = ความยาว (g); k = m + n - 1;
ขั้นตอนที่ 2
กำหนดช่วง j ที่จะเกิดการบิดเบี้ยว ค่าของ j คือช่วงที่ตัวห้อยของฟังก์ชันทั้งสองที่จะรวมเข้าด้วยกันคือ f (j) และ g (k+1-n) ถูกกฎหมาย ค่าของ 1 ที่เพิ่มให้กับ k คือการพิจารณาข้อเท็จจริงที่ว่า MATLAB เริ่มสร้างดัชนีเวกเตอร์ที่ 1 แทนที่จะเป็น 0:
j = สูงสุด (1,k+1-n):นาที (k, m)
ขั้นตอนที่ 3
จัดสรรพื้นที่ล่วงหน้าสำหรับผลลัพธ์ของการบิด:
my_result = ศูนย์ (k);
ขั้นตอนที่ 4
เขียน a for loop เพื่อวนซ้ำผ่านค่า k:
สำหรับ result_index = 1:k
ขั้นตอนที่ 5
คำนวณการบิดของค่า j ทั้งหมด:
my_result (k) = ผลรวม (f(j) .* g (k-j+1));
ขั้นตอนที่ 6
ปิด for loop ด้วยคำสั่ง "end"