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 Solvers33
Suggested Problems
-
4356 Solvers
-
2283 Solvers
-
Project Euler: Problem 5, Smallest multiple
1505 Solvers
-
Sort numbers by outside digits
151 Solvers
-
Return elements unique to either input
777 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!