【问题标题】:Efficient way to inter-lay zero rows into a Matrix in MATLAB在 MATLAB 中将零行插入矩阵的有效方法
【发布时间】:2018-08-05 11:00:30
【问题描述】:

我在 MATLAB 中有一个大矩阵,我想在矩阵的现有行之间插入零的行和列。我想从(3x3的一个小例子)去

[1 2 3; 
 4 5 6; 
 7 8 9]

[1 0 2 0 3;
 0 0 0 0 0 
 4 0 5 0 6;
 0 0 0 0 0;
 7 0 8 0 9]

我知道这可以使用 for 循环轻松完成,但是,我想避免使用 for 循环,因为已知它们在 MATLAB 中很慢。

根据我的经验,在 MATLAB 中操作矩阵通常有一种很好的方法,我想知道这里是否有一个简单的解决方案。

我正在寻找的应用程序是使用这种形式放大图像矩阵,然后使用插值填充零。

【问题讨论】:

  • 您可以使用interp2interpn 进行插值,您无需“手动”执行此操作。
  • 是的,我知道,但作为作业的一部分,我必须这样做

标签: matlab matrix


【解决方案1】:

你可以使用索引赋值:

a=...
[1 2 3; 
 4 5 6; 
 7 8 9];
result(1:2:2*size(a,1)-1, 1:2:2*size(a,2)-1) = a;

这里创建了一个变量result,并填充了它的奇数索引。

其他选项:

result2 = zeros(2*size(a)-1);
result2(1:2:end,1:2:end) = a;

【讨论】:

  • 谢谢我不知道索引分配。我认为您的意思是最后一行中的2*size(a) - 1。你能改变一下吗,因为不允许进行微小的编辑
猜你喜欢
  • 1970-01-01
  • 2016-01-26
  • 2011-04-08
  • 2013-11-04
  • 1970-01-01
  • 1970-01-01
  • 2018-08-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多