Problem 43494. Weighted Convolution
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
Problem Comments
-
7 Comments
Hi Aditya, Could you take a look at this problem: http://nl.mathworks.com/matlabcentral/cody/problems/43117-2d-indexes? Every time I click the "Solve" button, my internet browser cannot be directed to the right page.
I figured out what 's wrong there. The correct link is www.mathworks.com/ ..., not nl.mathworks.com/...
Awesome.
Solution Comments
Show commentsProblem Recent Solvers32
Suggested Problems
-
Extract leading non-zero digit
2173 Solvers
-
Find the maximum number of decimal places in a set of numbers
2968 Solvers
-
640 Solvers
-
Calculate the height of an object dropped from the sky
251 Solvers
-
805 Solvers
More from this Author29
Problem Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!