StarKanT 2021-10-11 21:11 采纳率: 100%
浏览 55
已结题

meshgrid扩展到多维问题?

给定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];

但是运行后还是显示参数过多。该如何解决此问题的多维矩阵生成?

  • 写回答

1条回答 默认 最新

  • joel_1993 2021-10-11 22:00
    关注

    你好,matlab分类中不是有问必答的题均由Joel的小号joel_1993回答【Joel认证】。

    % n行m列的随机矩阵
    n = 4;
    m = 3;
    a = cell(m,1);
    [a{:}]= ndgrid(1:n);
    a = arrayfun(@(i)a{i}(:),1:m, 'uniform', 0);
    a = [a{:}];
    Q = cell(size(a,1),1);
    for i = 1:1:size(a,1)
        Q{i} = full(sparse(a(i,:), 1:m, 1:m));
    end
    celldisp(Q)% Q里的每个都是你需要的,用Q{i}可以获取
    

    结果列举:

    Q{1} =
     
         1     2     3
    
     
     
    Q{2} =
     
         0     2     3
         1     0     0
    
     
     
    Q{3} =
     
         0     2     3
         0     0     0
         1     0     0
    
     
     
    Q{4} =
     
         0     2     3
         0     0     0
         0     0     0
         1     0     0
    
     
     
    Q{5} =
     
         1     0     3
         0     2     0
    
     
     
    Q{6} =
     
         0     0     3
         1     2     0
    
     
     
    Q{7} =
     
         0     0     3
         0     2     0
         1     0     0
    
     
     
    Q{8} =
     
         0     0     3
         0     2     0
         0     0     0
         1     0     0
    
     
     
    Q{9} =
     
         1     0     3
         0     0     0
         0     2     0
    
     
     
    Q{10} =
     
         0     0     3
         1     0     0
         0     2     0
    
     
     
    Q{11} =
     
         0     0     3
         0     0     0
         1     2     0
    
     
     
    Q{12} =
     
         0     0     3
         0     0     0
         0     2     0
         1     0     0
    
     
     
    Q{13} =
     
         1     0     3
         0     0     0
         0     0     0
         0     2     0
    
     
     
    Q{14} =
     
         0     0     3
         1     0     0
         0     0     0
         0     2     0
    
     
     
    Q{15} =
     
         0     0     3
         0     0     0
         1     0     0
         0     2     0
    
     
     
    Q{16} =
     
         0     0     3
         0     0     0
         0     0     0
         1     2     0
    
     
     
    Q{17} =
     
         1     2     0
         0     0     3
    
     
     
    Q{18} =
     
         0     2     0
         1     0     3
    
     
     
    Q{19} =
     
         0     2     0
         0     0     3
         1     0     0
    
     
     
    Q{20} =
     
         0     2     0
         0     0     3
         0     0     0
         1     0     0
    
     
     
    Q{21} =
     
         1     0     0
         0     2     3
    
     
     
    Q{22} =
     
         0     0     0
         1     2     3
    
     
     
    Q{23} =
     
         0     0     0
         0     2     3
         1     0     0
    
     
     
    Q{24} =
     
         0     0     0
         0     2     3
         0     0     0
         1     0     0
    
     
     
    Q{25} =
     
         1     0     0
         0     0     3
         0     2     0
    
     
     
    Q{26} =
     
         0     0     0
         1     0     3
         0     2     0
    
     
     
    Q{27} =
     
         0     0     0
         0     0     3
         1     2     0
    
     
     
    Q{28} =
     
         0     0     0
         0     0     3
         0     2     0
         1     0     0
    
     
     
    Q{29} =
     
         1     0     0
         0     0     3
         0     0     0
         0     2     0
    
     
     
    Q{30} =
     
         0     0     0
         1     0     3
         0     0     0
         0     2     0
    
     
     
    Q{31} =
     
         0     0     0
         0     0     3
         1     0     0
         0     2     0
    
     
     
    Q{32} =
     
         0     0     0
         0     0     3
         0     0     0
         1     2     0
    
     
     
    Q{33} =
     
         1     2     0
         0     0     0
         0     0     3
    
     
     
    Q{34} =
     
         0     2     0
         1     0     0
         0     0     3
    
     
     
    Q{35} =
     
         0     2     0
         0     0     0
         1     0     3
    
     
     
    Q{36} =
     
         0     2     0
         0     0     0
         0     0     3
         1     0     0
    
     
     
    Q{37} =
     
         1     0     0
         0     2     0
         0     0     3
    
     
     
    Q{38} =
     
         0     0     0
         1     2     0
         0     0     3
    
     
     
    Q{39} =
     
         0     0     0
         0     2     0
         1     0     3
    
     
     
    Q{40} =
     
         0     0     0
         0     2     0
         0     0     3
         1     0     0
    
     
     
    Q{41} =
     
         1     0     0
         0     0     0
         0     2     3
    
     
     
    Q{42} =
     
         0     0     0
         1     0     0
         0     2     3
    
     
     
    Q{43} =
     
         0     0     0
         0     0     0
         1     2     3
    
     
     
    Q{44} =
     
         0     0     0
         0     0     0
         0     2     3
         1     0     0
    
     
     
    Q{45} =
     
         1     0     0
         0     0     0
         0     0     3
         0     2     0
    
     
     
    Q{46} =
     
         0     0     0
         1     0     0
         0     0     3
         0     2     0
    
     
     
    Q{47} =
     
         0     0     0
         0     0     0
         1     0     3
         0     2     0
    
     
     
    Q{48} =
     
         0     0     0
         0     0     0
         0     0     3
         1     2     0
    
     
     
    Q{49} =
     
         1     2     0
         0     0     0
         0     0     0
         0     0     3
    
     
     
    Q{50} =
     
         0     2     0
         1     0     0
         0     0     0
         0     0     3
    
     
     
    Q{51} =
     
         0     2     0
         0     0     0
         1     0     0
         0     0     3
    
     
     
    Q{52} =
     
         0     2     0
         0     0     0
         0     0     0
         1     0     3
    
     
     
    Q{53} =
     
         1     0     0
         0     2     0
         0     0     0
         0     0     3
    
     
     
    Q{54} =
     
         0     0     0
         1     2     0
         0     0     0
         0     0     3
    
     
     
    Q{55} =
     
         0     0     0
         0     2     0
         1     0     0
         0     0     3
    
     
     
    Q{56} =
     
         0     0     0
         0     2     0
         0     0     0
         1     0     3
    
     
     
    Q{57} =
     
         1     0     0
         0     0     0
         0     2     0
         0     0     3
    
     
     
    Q{58} =
     
         0     0     0
         1     0     0
         0     2     0
         0     0     3
    
     
     
    Q{59} =
     
         0     0     0
         0     0     0
         1     2     0
         0     0     3
    
     
     
    Q{60} =
     
         0     0     0
         0     0     0
         0     2     0
         1     0     3
    
     
     
    Q{61} =
     
         1     0     0
         0     0     0
         0     0     0
         0     2     3
    
     
     
    Q{62} =
     
         0     0     0
         1     0     0
         0     0     0
         0     2     3
    
     
     
    Q{63} =
     
         0     0     0
         0     0     0
         1     0     0
         0     2     3
    
     
     
    Q{64} =
     
         0     0     0
         0     0     0
         0     0     0
         1     2     3
    

    有帮助请给个采纳支持Joel哟

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月20日
  • 已采纳回答 10月12日
  • 创建了问题 10月11日

悬赏问题

  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝