【问题标题】:Merger of Multiple matrices using Matlab/Octave使用 Matlab/Octave 合并多个矩阵
【发布时间】:2016-09-28 07:08:34
【问题描述】:

假设我们有 3 个矩阵,ABC,它们的大小都相同 256x256。已知矩阵A 的最后20% 列与矩阵B 的前20% 相同,矩阵B 的最后10% 与矩阵C 的前10% 相同。所以在这些情况下,由于我们知道重叠量,我不需要比较这 3 个矩阵,但我想在重叠处加入它们。

以较小的矩阵为例,这里有3个矩阵

A = [1 2 3 4 ; 5 6 7 8; 9 10 11 12];
B = [3 4 13 14; 7 8 15 16; 11 12 17 18]; 
C = [14 19 20 21; 16 22 23 24; 18 25 26 27];

所以我希望我的输出是

D = [1     2     3     4    13    14    19    20    21
     5     6     7     8    15    16    22    23    24
     9    10    11    12    17    18    25    26    27

我希望这可以更好地解释它。我对matlab非常陌生。我尝试使用矩阵移位,但我们只有循环移位可用。 连接不起作用,因为它只是加入了 3 个矩阵。将这 3 个矩阵叠加在一起的最佳方法是什么?

【问题讨论】:

  • 你能提供你目前得到的吗?
  • 你想如何对这 3 个矩阵进行缩放?这不是很清楚:您想将它们标记为具有 3D 矩阵吗?每个矩阵一层?请解释一下并尝试提供一段代码来理解
  • 或创建一个包含三个 4x4 矩阵和所需输出的示例
  • @Moorthi 请考虑编辑您的问题以添加有关您的问题的信息
  • 假设你总是知道重叠的数量,那么这只是一个索引问题,如下面的串行指出的那样。如果您想要具有未知重叠程度的串联,则根据所需的效率水平可能会涉及更多。

标签: matlab matrix octave overlapping


【解决方案1】:

正确使用矩阵indexingconcatenation

举个例子

D = [A B(:,3) C];

对于 256x256 矩阵和您的连接条件:

D = [A B(:, 0.2*256+1 : 0.9*256) C]

由于256/10 不是整数,您可以调整索引值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 2018-05-31
    • 2018-10-14
    • 1970-01-01
    • 2013-03-14
    • 2018-05-16
    • 1970-01-01
    相关资源
    最近更新 更多