【问题标题】:How to make a 8-by-8 matrix to 2-by-32 matrix in matlab如何在 matlab 中将 8×8 矩阵转换为 2×32 矩阵
【发布时间】:2016-05-17 13:59:57
【问题描述】:

我有A 是一个8-by-8 矩阵。我想取最后 6 行并将它们放在第一行和第二行旁边,以便矩阵 A 变为 2-by-32

编辑:

A =

12,6872713121256    12,0602414786595    10,3270660536998    7,80915144314411    10,0045468077317    9,60906828665612    8,31320998311920    6,36510295973004
12,0602414786595    12,6872713121256    12,0602414786595    10,3270660536998    9,38969514490848    10,0045468077317    9,60906828665612    8,31320998311921
10,3270660536998    12,0602414786595    12,6872713121256    12,0602414786595    7,92932345092466    9,38969514490848    10,0045468077317    9,60906828665611
7,80915144314411    10,3270660536998    12,0602414786595    12,6872713121256    5,89043977575553    7,92932345092466    9,38969514490847    10,0045468077317
10,0045468077317    9,38969514490848    7,92932345092466    5,89043977575553    7,90694573827892    7,48897349750382    6,39213878381770    4,80849938907536
9,60906828665612    10,0045468077317    9,38969514490848    7,92932345092466    7,48897349750382    7,90694573827892    7,48897349750382    6,39213878381770
8,31320998311920    9,60906828665612    10,0045468077317    9,38969514490847    6,39213878381770    7,48897349750382    7,90694573827892    7,48897349750382
6,36510295973004    8,31320998311921    9,60906828665611    10,0045468077317    4,80849938907536    6,39213878381770    7,48897349750382    7,90694573827892

当我输入以下代码时,Dans 解决方案没有给出我想要的:Ry=reshape(A.',[],2).';

我想将第一行和第二行保留在那里,我只想移动其他行(从第 3 行到第 8 行)并将它们放在第 1 行和第 2 行旁边 .. 这样第 3 行就是下一个到第 1 行 .. 第 4 行在第 2 行旁边 .. 第 5 行在第 1 行和第 3 行旁边 ...第 6 行在第 2 和第 4 行旁边 .. 依此类推...谢谢

【问题讨论】:

  • 搜索“如何在matlab中重塑矩阵”
  • 关于@Dan 答案下方的 cmets。你能提供两个矩阵的例子吗?
  • 是的,我会发布它们

标签: matlab matrix reshape


【解决方案1】:

在转置(必要的,因为 MATLAB 使用 column-major 索引)到 3D 矩阵后使用 reshape。然后置换矩阵以将新的第三维与第二维交换,然后重新整形并转回

reshape(permute(reshape(A.',8,2,[]),[1,3,2]),[],2).'

【讨论】:

  • 谢谢你这个作品 Ry=reshape(R.',2,[]);无需转置
  • @Joe 你确定吗?因为如果我想一想,肯定它实际上必须是reshape(A.',[],2).' 。检查实际数字以确保他们去他们需要的地方。
  • 我刚刚在 matlab 中做了它,它像你一样工作,但没有转置.. 当我做转置时,我得到 32*2 矩阵.. 只需在 matlab 中写 A=rand(8); B=reshape(A.',2,[]).' ; 现在看到 B 的暗淡..谢谢
  • @Joe 是的,我知道。看看我的评论,我交换了[]2,这是一个错字。不要只看尺寸,还要看里面的实际数字,并确保每个数字都分别到达您想要的位置。
  • 我现在看到了.. 我想把我的第一行和第二行保留在那里,我只想移动其他行(从 3 到 8 的行)并将它们放在第 1 行旁边,然后第 2 行 .. 使第 3 行紧邻第 1 行 .. 第 4 行紧邻第 2 行 .. 第 5 行紧邻第 1 行和第 3 行 ... 第 6 行紧邻第 2 行和第 4 行 .. 依此类推...你的代码没有这样做,你能改变它,让它像我现在说的那样......谢谢你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-06
  • 2015-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多