Matlab 编程 矩阵相应位置展开矩阵A= [ 0 0 0; 0 0 1;1 1 1],相应的1的位置,用[3;6]的排列组合展开,例如,矩阵A展开之后变为B=[ 0 0 0;0 0 3;0 0 6;3 3 3;3 3 6;3 6 3;3 6 6;6 3 3;6 3 6;6 6 3;6 6 6; ]求各路大神帮忙想一
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/16 01:32:33
Matlab 编程 矩阵相应位置展开矩阵A= [ 0 0 0; 0 0 1;1 1 1],相应的1的位置,用[3;6]的排列组合展开,例如,矩阵A展开之后变为B=[ 0 0 0;0 0 3;0 0 6;3 3 3;3 3 6;3 6 3;3 6 6;6 3 3;6 3 6;6 6 3;6 6 6; ]求各路大神帮忙想一
Matlab 编程 矩阵相应位置展开
矩阵A= [ 0 0 0;
0 0 1;
1 1 1],相应的1的位置,用[3;6]的排列组合展开,例如,矩阵A展开之后变为
B=[ 0 0 0;
0 0 3;
0 0 6;
3 3 3;
3 3 6;
3 6 3;
3 6 6;
6 3 3;
6 3 6;
6 6 3;
6 6 6; ]求各路大神帮忙想一想.看看有什么通用的方法吗?我是真没什么想法.
Matlab 编程 矩阵相应位置展开矩阵A= [ 0 0 0; 0 0 1;1 1 1],相应的1的位置,用[3;6]的排列组合展开,例如,矩阵A展开之后变为B=[ 0 0 0;0 0 3;0 0 6;3 3 3;3 3 6;3 6 3;3 6 6;6 3 3;6 3 6;6 6 3;6 6 6; ]求各路大神帮忙想一
%很通用的程序,可以随意改矩阵A,及替换值re,你可以试着改一下
%看看效果
clc;clear;
A= [ 0 0 0;
0 0 1;
1 1 1];
re=[3;6];
AA=cell(size(A,1),1);
for i=1:size(A,1)
a=A(i,:);
ind=find(A(i,:)==1);
nlen=length(ind);
n=length(re)^nlen;
if nlen==0
b=a;
else
b=zeros(n,size(A,2));
q=zeros(1,length(re)*nlen);
for j=1:length(re)
q(j:length(re):end)=re(j);
end
row=unique(nchoosek(q,nlen),'rows');
for j=1:n
a(ind)=row(j,:);
b(j,:)=a;
end
end
AA{i}=b;
end
AA=cell2mat(AA)