怎样自动排列出元素的组合?且计算出相应的值。

10 次查看(过去 30 天)
gahivak
gahivak 2022-11-17
回答: paxewoc 2022-11-17
比如 ABCD这四个字母排列组合中考虑顺序因素,取其三种元素就是24种可能性,那么怎么利用MATLAB将这全部罗列出来?第二,ABCD在每个位置都有其特定的数值,比如A在第一位值为1.8,第二位值为0,第三位为0。B在第一位又是多少多少。。。每个字母在每个位置都有特定的数值但可以允许相同,然后不仅要做到这24种可能性的自动罗列功能,还要做到自动罗列后可以自动输出其组合的值之和????

采纳的回答

paxewoc
paxewoc 2022-11-17
建立映射关系即可,直接进行索引。
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个值

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!