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

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

Risposta accettata

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

Più risposte (0)

Categorie

Scopri di più su Resizing and Reshaping Matrices in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!