a55 matlab排列组合_matlab矩阵排列组合

该博客探讨了如何在MATLAB中生成并输出所有可能的矩阵排列组合及其对应的计算值。通过初始化矩阵A,随机生成组合,并计算每个组合的元素之和,博主寻求一次性输出所有组合情况的方法。目前的代码只能输出一个组合,需要改进以实现所有组合的遍历和输出。
摘要由CSDN通过智能技术生成

目的是:运行之后输出所有的排列组合情况(即输出常规矩阵),以及对应的计算值。

问题是:现目前的程序只能输出一个组合结果及对应值,不能一次输出所有的组合情况。

请各位大佬指教,谢谢!

%% (1)初始化,随机生成cellA,B是A中每个元素的向量长度,D是A中每个位置的组合数索引

clear;

clc;

row=4;

column=4;

B=zeros(1,row*column);

D=ones(1,row*column);

A={0.5,[0.6,0.7,0.8],[0.1,0.2],0.4;

[0.4,0.3,0.2],0.5,[0.4,0.5],0.1;

[0.9,0.8],[0.6,0.5],0.5,[0.2,0.3];

0.6,0.9,[0.8,0.7],0.5}

for i=1:row

for j=i+1:column

index=(i-1)*column+j;%取出元素下角标   %转换为单索引

B(index)=length(A{i,j});

end

end

B

%% (2)对A取随机,生成randA

randA=cell(row,column);

for j=1:size(A,1)

for k=1:size(A,2)%返回A的第2维的尺寸。

r=randperm(length(A{j,k}));%randperm将一列序号随机打乱,序号必须是整数

randA{j,k}=A{j,k}(r);%rand函数产生由在(0, 1)之间均匀分布的随机数组成的数组。

end

end

randA

%%(3) 罗列所有的组合可能,每种组合对应一个从A中随机取元素生成的矩阵AI,对AI中所有元素求和即的C(i),最终输出C;

% B(find(B==0))=[];

E=[];

E=B(find(B~=0))

num=prod(prod(E));    %组合总数目 %求数组元素的乘积

C=zeros(1,num);         %输出向量

for i=1:num

for j=1:length(D)

rowIndex=ceil(j/column);

columnIndex=j-(rowIndex-1)*column;

AI(rowIndex,columnIndex)=randA{rowIndex,columnIndex}(D(j));

AI(columnIndex,rowIndex)=1- AI(rowIndex,columnIndex);

end

% end

comb=length(D);

while comb~=0

if D(comb)

D(comb)=D(comb)+1;

break;

else

D(comb)=1;

comb=comb-1;

end

end

end

n=4;

sum=0;

for g=1:num  %没有做到矩阵循环效果

for i=1:n-2

for j=i+1:n-1

for k=j+1:n

sum=sum+abs(AI(i,j)+AI(j,k)-AI(i,k)-0.5);

sum;

end

end

end

CI=(4/(n*(n-1)*(n-2)))*sum;

C(1,g)=1-CI;

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值