2

我看到了另一个问题,但他只在一个索引上运行。我需要在不使用 for 循环的情况下对列索引和行索引进行操作。有没有办法做到这一点:

令 M (a,b) 为矩阵,大小为括号中的那个。我想将每个元素操作为 exp( (mn)^2)

4

2 回答 2

7

利用bsxfun

M = exp( bsxfun( @minus, (1:a)', 1:b ).^2 );
于 2013-06-03T11:03:20.587 回答
3

在这里,使用bsxfun的替代方法是使用meshgrid

>> a = 5; b = 4; % Some example dimensions
>> [n, m] = meshgrid(1:b, 1:a)

n =

     1     2     3     4
     1     2     3     4
     1     2     3     4
     1     2     3     4
     1     2     3     4


m =

     1     1     1     1
     2     2     2     2
     3     3     3     3
     4     4     4     4
     5     5     5     5

>> M = exp((m - n).^2);

请注意,此示例主要是指导性的,而不是实用的 -bsxfun解决方案更快并且消耗更少的内存 - 但这显示了如何生成矩阵下标矩阵。

于 2013-06-03T11:07:14.673 回答