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.

1 view (last 30 days)
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.

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!