建立映射关系即可,直接进行索引。
A = [1.8, 0, 0];
B = [11 12 13];
C = [21 22 23];
D = [31 32 33];
map = [A;B;C;D];
combs = combntns(1:4,3); % combntns也可用nchoosek代替
ncombs = nchoosek(4,3);
nperms = factorial(3);
subs = zeros(ncombs*nperms,3);
for k=1:ncombs
subs(nperms*(k-1)+1:(nperms*k),:) = perms(combs(k,:));
end
pos = repmat([1 2 3],ncombs*nperms,1);
permcombs = map(sub2ind(size(map),subs,pos)); % 最终的排列组合结果
csum = sum(permcombs,2); % 这里按列求和,得到24个值
rsum = sum(permcombs,1); % 这里按行求和,得到3个值
tsum = sum(permcombs(:)); % 这里求总和,得到1个值