Consider an one dimensional convolution, and change the multiplication part (a*b) to power (a^b) and summation part (Sigma) to multiplication (Phi). How can I write a program for this using vectorization.

2 views (last 30 days)
Shaik Ahmad
Shaik Ahmad on 5 Oct 2016
Commented: Matt J on 12 Oct 2016
Mathematically I want to implement a function. A and B are two integer arrays.
I have implemented the program using for loops (submitted below). How can I write a program for this using vectorization.
m=length(a);
n=length(b);
A=[a,zeros(1,n)];
B=[b,zeros(1,m)];
out=zeros(1,m+n-1);
for i=1:m+n-1
out(i)=1;
for j=1:m
if i-j+1>0
out(i)=out(i)*(A(j)^B(i-j+1));
end
end
end
Thank you.

Answers (1)

Matt J
Matt J on 5 Oct 2016
Edited: Matt J on 5 Oct 2016
out= exp( conv(log(A),B) );
out=round(real(out));
  8 Comments

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by