【问题标题】:How can I concatenate vectors to create non-rectangular matrices in MATLAB?如何连接向量以在 MATLAB 中创建非矩形矩阵?
【发布时间】:2015-02-04 21:53:35
【问题描述】:

有没有办法创建非矩形矩阵?例如,如果我有一个矩阵a=[6 8 10] 和另一个矩阵b=[1 5],我是否可以将它们垂直连接以获得[6 8 10] 在一行和[1 5] 在另一行?

【问题讨论】:

  • 你不能。 MATLAB 不支持不规则矩阵。解决此问题的一种方法是制作一个单元格数组,其中每个单元格都是一个长度不等的向量。另一种方法是创建一个矩阵,将那些不包含任何内容的值映射到预设数字,例如零。因此,您可以将a 和b 连接成一个矩阵,使其变为[6 8 10; 1 5 0];。

标签: arrays matlab jagged-arrays


【解决方案1】:

直接的答案是否。 MATLAB 不支持ragged or non-rectangular or non-square matrices。解决此问题的一种方法是制作一个单元格数组,其中每个单元格都是一个长度不等的向量。

类似:

a = [6 8 10];
b = [1 5];
c = cell(1,2);
c{1} = a;
c{2} = b;

celldisp(c)

c{1} =

     6     8    10

c{2} =

     1     5

另一种方法是创建一个矩阵,其中不包含任何内容的值映射到预设数字,例如零。因此,您可以将a 和b 连接成一个矩阵,使其变为[6 8 10; 1 5 0];。如果这是你喜欢的,你可以这样做:

a = [6 8 10];
b = [1 5];
c = zeros(2, 3);
c(1,1:numel(a)) = a;
c(2,1:numel(b)) = b;
disp(c)

 6     8    10
 1     5     0

关于这个特定主题的更全面的论文可以在 gnovice 的回答中找到:How can I accumulate cells of different lengths into a matrix in MATLAB?

另一个相关答案由 Jonas 创建:How do I combine uneven matrices into a single matrix?

【讨论】:

  • 嘿 rayreng ..感谢您的回复..它奏效了...再次感谢!!
猜你喜欢
  • 2016-08-08
  • 2014-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多