【问题标题】:Concatenate different length vectors连接不同长度的向量
【发布时间】:2017-02-18 04:49:27
【问题描述】:

我在 MATLAB 中连接向量时遇到困难。

A = [1
     2
     3]

B = [6
     7
     8
     9
     10]

Desired result:

C = [1
     2
     3
     6 
     7                
     8
     9
     10]

AB 的大小在我的脚本的每次迭代中都不同,我想形成串联的结果向量 C,它具有动态大小。

这是我尝试过的:

【问题讨论】:

  • 你尝试了什么?
  • vertcat 或 horzcat 沿着你的向量方向

标签: matlab


【解决方案1】:
A = [1
     2
     3];

B = [6
     7
     8
     9
     10];

垂直两个向量/矩阵的串联是你想要的,像这样完成......

C = [A; B]; 

...或者这个...

C = [A
     B];

...或者这个...

C = vertcat(A,B);

这三个都给了

C = [1
     2
     3
     6
     7 
     8
     9
     10]

% As you requested...

你遇到了麻烦,因为你试图使用horzcat

C = horzcat(A',B');

Horizo​​ntal 串联水平合并矩阵,即

C = [1, 6
     2, 7
     3, 8
     ?, 9
     ?, 10]

所以为了避免这种情况,您已经转置矩阵以使其成为行而不是列,然后将结果转回?你只需要vertcat!我已经在上面展示了这个的简写和完整形式。

【讨论】:

  • 感谢分享这个。你的回答很有用。
  • @PreetiSingh 然后请通过单击问题左上角的绿色/白色勾号将其标记为“已接受”:)
【解决方案2】:

试试:

A = [1 2 3];
B = [4 5 6 7 8 9 10];

C = [A B]

对于垂直向量 A' 和 B' 使用:

C = [A;B]

【讨论】:

  • 感谢分享这个。你的回答很有用。
【解决方案3】:

万无一失的方法是这样的:

C = [A(:);B(:)];

如果使用这种方法,那么 A 和 B 是行向量、列向量还是矩阵都没有关系。

【讨论】:

  • 感谢分享这个。你的回答很有用。
  • 虽然您是对的,但学习始终使用它可能会有风险。在更复杂的程序中,盲目地使用它可能会完全弄乱矩阵的维度!也许详细说明您的方法发生了什么以便更好地理解:)
猜你喜欢
  • 1970-01-01
  • 2017-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-22
  • 2018-12-31
相关资源
最近更新 更多