【问题标题】:Finding indices of matrices while traversing遍历时查找矩阵的索引
【发布时间】:2017-08-04 18:15:19
【问题描述】:

我有一个矩阵:
1|2|3|4
4|5|6|7
7|8|9|10
10|11|12|13
我想将此矩阵的索引与另一个不同大小的矩阵的索引相乘:
7|8|9
9|10|10
10|11|11
对于这两个矩阵,我使用了以下 for 循环:

for x=1:4  
  for y=1:4  
     for m=1:3  
       for n=1:3  
          c=(m*x+n*y);
       end
     end
  end
end

有没有什么方法可以在不使用循环的情况下重写上面的代码?如果可以在上述矩阵中生成每个元素的索引,我认为可以做到。请帮忙

【问题讨论】:

  • 第一个矩阵的最后一行只有 3 列,而所有其他行都有 4 列。这不可能。你期待什么输出?

标签: matlab matrix indices


【解决方案1】:
mx = m'*x; 
mx = mx(:);
ny = n'*y;
ny = ny(:);
mxe = repmat(mx, [length(ny), 1]);
nye = repmat(ny, [length(mx), 1]);
c = mxe+nye;

这将导致 c 包含在您所在的循环期间放入的所有值(请注意,在您的循环中,值被分配和覆盖)。

【讨论】:

  • 我将同样的方法应用于两个不同大小的 256x256 和 128x128 矩阵,我收到以下错误消息:???超过了程序允许的最大变量大小。 ==> repmat 在 90 时出错 mind = mind(:,ones(1,siz(1)));请帮忙
  • 尺寸(mx) 32768 1
    尺寸(ny) 32768 1
猜你喜欢
  • 1970-01-01
  • 2020-11-05
  • 2013-09-13
  • 1970-01-01
  • 1970-01-01
  • 2013-04-20
  • 2016-02-12
  • 2022-01-06
  • 1970-01-01
相关资源
最近更新 更多