给定3个元素1、2、3,生成一个3*3的矩阵,要求第一列只含1个元素1,第二列只含1个元素2,第三列只含1个元素3,其余元素为0,有点类似于排列组合,共有27种结果。
(代码由技术专家团-Joel提供)
clc;
clear;
q = [1,2,3];
[i1,i2,i3] = meshgrid(1:3);
for k = 1:numel(i1)
A = zeros(3,3);
A(i1(k),1)=1;A(i2(k),2)=2;A(i3(k),3)=3;
A
end
但meshgrid函数只能到3维,想实现3维以上还可以怎么解决?网上也找到了meshgrid扩展到多维的方法:
function result=meshgrid5D(a,b,c,d,e)
n1=numel(a);n2=numel(b);n3=numel(c);n4=numel(d);n5=numel(e);
n=n1*n2*n3*n4*n5;
aa=reshape(full(a(:)),[1,n1,1,1,1]);
bb=reshape(full(b(:)),[n2,1,1,1,1]);
cc=reshape(full(c(:)),[1,1,1,n3,1]);
dd=reshape(full(d(:)),[1,1,n4,1,1]);
ee=reshape(full(e(:)),[1,1,1,1,n5]);
aa=aa(ones(n2,1),:,ones(n4,1),ones(n3,1),ones(n5,1));
bb=bb(:,ones(n1,1),ones(n4,1),ones(n3,1),ones(n5,1));
cc=cc(ones(n2,1),ones(n1,1),ones(n4,1),:,ones(n5,1));
dd=dd(ones(n2,1),ones(n1,1),:,ones(n3,1),ones(n5,1));
ee=ee(ones(n2,1),ones(n1,1),ones(n4,1),ones(n3,1),:);
oo=ones(n,1);
aa=reshape(aa,n,1);
bb=reshape(bb,n,1);
cc=reshape(cc,n,1);
dd=reshape(dd,n,1);
ee=reshape(ee,n,1);
result=[oo aa bb cc dd ee];
但是运行后还是显示参数过多。该如何解决此问题的多维矩阵生成?