Weighted Convolution - MATLAB Cody - MATLAB Central

Problem 43494. Weighted Convolution

Difficulty:Rate

Given two input vectors x = [x_1, x_2, ..., x_K] and y = [y_1, y_2, ..., y_K] of equal length, compute the weighted convolution output z = [z_1, z_2, ..., z_K], where

     z_k = sum(nchoosek(k-1,j-1)*x_{k-j+1}*y_j, j = 1..k),  k = 1, 2, ..., K

Example: x = [1, 2, 3]; y = [4, 5, 6]. Then z = [z_1, z_2, z_3] where

z_1 = nchoosek(0,0)*1*4 = 4
z_2 = nchoosek(1,0)*2*4 + nchoosek(1,1)*1*5 = 13
z_3 = nchoosek(2,0)*3*4 + nchoosek(2,1)*2*5 + nchoosek(2,2)*1*6 = 38

Hint: This can be seen as the linear convolution weighted by the binomial coefficient. It is straightforward to solve this problem using a for loop. I am wondering if there exists some more elegant way (e.g., vectorization) to do this.

Solution Stats

42.57% Correct | 57.43% Incorrect
Last Solution submitted on Jun 24, 2025

Problem Comments

Solution Comments

Show comments
Why should you share code?
In a discussion on LInkedin about my recent blog post, Do these...
2
3

Problem Recent Solvers34

Suggested Problems

More from this Author29

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!