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

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 14: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哟

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    StarKanT 2021-10-11 14:17

    你好,首先感谢你的回答!想知道给定参数是通过ndgrid(1:n)设置的吗?另外能否将所有的矩阵都扩充成m行n列?谢谢。

    回复
    joel_1993 回复 StarKanT 2021-10-11 14:24

    你自己设置m和n的值啊,我这里举了个例子是n=4行m=3列,你把n随便设,m随便设置都可以,只要你电脑能够承受住,要知道
    输出的矩阵结果是n的m次方个矩阵

    回复
    StarKanT 回复 joel_1993 2021-10-11 14:44

    我知道,我的意思是每个矩阵里面的元素1、2、3是不是通过ndgrid设置的,另外输出的结果可不可以固定为n行m列的格式,空白处也用0代替。

    回复
    展开全部7条评论
编辑
预览

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 为什么投影机用酷喵播放电影放一段时间就播放不下去了?提示发生未知故障,有什么解决办法吗?
  • ¥15 来个会搭建付费网站的有偿
  • ¥100 有能够实现人机模式的c/c++代码,有图片背景等,能够直接进行游戏
  • ¥20 校园网认证openwrt插件
  • ¥15 以AT89C51单片机芯片为核心来制作一个简易计算器,外部由4*4矩阵键盘和一个LCD1602字符型液晶显示屏构成,内部由一块AT89C51单片机构成,通过软件编程可实现简单加减乘除。
  • ¥15 求GCMS辅导数据分析
  • ¥30 SD中的一段Unet下采样代码其中的resnet是谁跟谁进行残差连接
  • ¥15 Unet采样阶段的res_samples问题
  • ¥15 R语言regionNames()和demomap()无法选中中文地区的问题
  • ¥15 Open GL ES 的使用
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部