【问题标题】:matlab 3D matrix creation querymatlab 3D矩阵创建查询
【发布时间】:2015-12-09 19:51:19
【问题描述】:

我正在尝试在 MATLAB 中创建一个 3D 矩阵。我关注了这个example。我的代码是这样的:

A1=zeros(50,2,10);
A1 = [1 2; 2 3; 3 11; 11 12; 11 9; 9 10; 9 7; 7 8; 7 5; 5 6; 5 4; 4 3];

A1(:,:,2) = [1 3; 3 2; 3 4; 3 5; 5 6; 6 7; 6 8; 6 9; 9 10; 10 11; 11 12; 12 13; 11 17; 17 16; 16 14; 14 15; 14 12; 16 18; 18 27; 18 19; 19 20; 20 21; 27 21; 27 26; 21 22; 26 25; 25 24; 24 22; 22 23]

我得到的错误是:下标分配维度不匹配。
谁能告诉我我哪里出错了?

【问题讨论】:

  • 您能解释一下预期的输出吗?您没有为 [50 2 10] 矩阵分配足够的元素。

标签: matlab


【解决方案1】:

你对A1(:,:,2) 所做的就是你想在一个 50x2x10 超矩阵的第二个位置插入一个 50x2 矩阵。但是右侧的矩阵没有足够的行数(29,而不是 50)。

【讨论】:

  • 我没有注意到A1 = [1 2; 2 3; 3 11; 11 12; 11 9; 9 10; 9 7; 7 8; 7 5; 5 6; 5 4; 4 3]; 分配。但是,您也不正确,因为那是 12x2 矩阵,而不是 2x12
  • 是的,行数不够,我知道,我想用零填充其余的行。 29 行应该用我给定的数据填充,其余的应该用零填充
  • 问题是,如果我看得很清楚,您想创建一个50x2x10 矩阵,其(:,:,2) 元素应该是29x2 matrix(其余部分用零填充)。如果这是问题所在,那么一个可能的解决方案是:A1=zeros(50,2,10); A1(1:29,:,2) = [1 3; 3 2; 3 4; 3 5; 5 6; 6 7; 6 8; 6 9; 9 10; 10 11; 11 12; 12 13; 11 17; 17 16; 16 14; 14 15; 14 12; 16 18; 18 27; 18 19; 19 20; 20 21; 27 21; 27 26; 21 22; 26 25; 25 24; 24 22; 22 23] 仍然不清楚的地方:您想在第二个语句中使用矩阵 A1 = [1 2; 2 3; 3 11; 11 12; 11 9; 9 10; 9 7; 7 8; 7 5; 5 6; 5 4; 4 3] 做什么?
  • 在第二个语句中再次在位置 2 填充一个 16*2 的矩阵,以这种方式
  • 第一个位置的矩阵,位置 2 中的另一个 diff 大小的矩阵另一个位置 3 中的矩阵
猜你喜欢
  • 2016-03-08
  • 1970-01-01
  • 1970-01-01
  • 2011-02-17
  • 1970-01-01
  • 2015-02-04
  • 1970-01-01
  • 1970-01-01
  • 2013-09-21
相关资源
最近更新 更多