Permutations using multiple vectors of different lengths

I am trying to sum values of all permutations of values from multiple matrices of different lengths, and cannot find a way to use perms or for loops to do it.
v1=[10,600,800];
v2=[6,13];
v3=[5,2];
v4=[10,15,22,6];
v5=[12,5];
I want each matrix to contribute one (and only one) value to the permutation. Ultimately, I'm looking for a list that shows something like the following:
10+6+5+10+12=43
10+6+5+10+5=36
10+6+5+15+12=45
...
800+13+2+6+5=826
Even better would be if I could figure out how to get it to show the indexes used for each one as follows:
(1)+(1)+(1)+(1)+(1)=43
(1)+(1)+(1)+(1)+(2)=36
(1)+(1)+(1)+(2)+(1)=45
...
(3)+(2)+(2)+(4)+(2)=826
Any help is greatly appreciated. Thank you.

2 Comments

help ndgrid
Think about what it does.
ndgrid may work, but I'm having a difficult time understanding how it would be implemented.

Sign in to comment.

 Accepted Answer

If the number of matrixes does not change (in this case 5 different maxtrixes,a b,c,d,e), for-loops could be used this way:
output=zeroes(1,length(a)*length(b)*length(c)*length(d)*length(e));
count=1;
for i1=a
for i2=b
for i3=c
for i4=d
for i5=e
output(count)=i1+i2+i3+i4+i5;
count=count+1;
end
end
end
end
end

2 Comments

If you want indexes, this output produces each index used to obtain the sum.
function output = sumPermMatrixes(a,b,c,d,e)
output=zeros(length(a)*length(b)*length(c)*length(d)*length(e),6);
count=1;
for i1=1:length(a)
for i2=1:length(b)
for i3=1:length(c)
for i4=1:length(d)
for i5=1:length(e)
output(count,:)=[i1,i2,i3,i4,i5,a(i1)+b(i2)+c(i3)+d(i4)+e(i5)];
count=count+1;
end
end
end
end
end
end
Those answers worked well, thank you! The code in the first version should have "zeros" instead of "zeroes", but that's not a big deal.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!