我有一个 2*2 元胞数组,它的每个元素都是一个 2*2 矩阵,称为 m1,m2,m3,m4。我想将此元胞数组转换为大小为 4*4 的矩阵,以便我生成的矩阵M=[m1 m2;m3 m4]。我尝试使用 cell2mat 函数,它给我 2*8 矩阵,然后将其重塑为 4*4 但这不起作用。
谁能帮我用matlab做这个?
请给出不同大小的元胞数组和矩阵大小的通用代码,因为在我的代码中,基于输入数字元胞数组和矩阵大小的变化。
海伯特,
我是否正确地假设您所说的
M
实际上是您上一篇帖子中的
c
?问题是 c
是一个 2x2 元胞数组,其中每个元素都是 1x4。
如果我们修改我在那里发布的内容。并且让
M
成为您想要的每个子矩阵的形状(M
是具有 2x2 子矩阵的 2x2 元胞数组)。注意我修改了c
的定义。我们可以得到你想要的。
M = reshape(arrayfun(@(i) randi(100, 2, 2), 1:4, 'uni', 0), 2,2);
c = cellfun(@(x) reshape(x, size(M)), reshape(num2cell(cell2mat(cellfun(@(m) m(:), M(:)', 'uni', 0)), 2), size(M{1})), 'uni', 0);
cMatrix = cell2mat(c);
̷͚͖̥̺̍̔͜d̶̜͍͔̺͎̫̲̹̋̊̐́̽͋̎͂̎̈́͂̀̚͜͜取f̴͇͍̟̻̲̻̰̦͕͚̺̹̀̓ͅj̴̢̢͎̤̝̘̗͇̙͓͇̼̖̟̰̠̩̋į̷̛̼̹̦̹̦̒̑͑̂̂͠͠ẁ̵̢̧̡̗̗̻͕̤̖͖̹͙̲́͋̈́̂j̴̢̢͎̤̝̘̗͇̙͓͇̼̖̟̰̠̩̋į̷̛̼̹̦̹̦̒̑͑̂̂͠͠ẁ̵̢̧̡̗̗̻͕̤̖͖̹͙̲́͋̈́̂d̸̨̢̖̫̥̜̥̹̜̫̱͎̽̄̈́d̸̨̢̖̫̥̜̥̹̜̫̱͎̽̄̈́d̸̨̢̖̫̥̜̥̹̜̫̱͎̽̄̈́j̷̧͎̳̣̺̜͈̈́̐̽́͑̕d̷̛͚̯̫̳͎̮͉̰̫̋̾͒̈́̑́̅W̸̝̭̦̞̟̋͗͒͐̑̌̚͘͝͝W̸̝̭̦̞̟̋͗͒͐̑̌̚͘͝͝W̸̝̭̦̞̟̋͗͒͐̑̌̚͘͝͝a̷͙̱̜͔͂̉̽̈a̷͙̱̜͔͂̉̽̈a̷͙̱̜͔͂̉̽̈a̷͇̟͛ā̴̡̳͍̘̞̮̲̖̣̬͛ͅā̸̧̗̥͉͓̪̰͈̟͔̠̠̙͓͎̝͙̋̉̉̀̒̓͋ ̀͘͠ǎ̴̞̳͙͝ ̀͘͠ǎ̴̞̳͙͝ ̀͘͠ǎ̴̞̳͙͝ ̀͘͠ǎ̴̞̳͙͝ ̀͘͠ǎ̴̞̳͙͝