我看到了另一个问题,但他只在一个索引上运行。我需要在不使用 for 循环的情况下对列索引和行索引进行操作。有没有办法做到这一点:
令 M (a,b) 为矩阵,大小为括号中的那个。我想将每个元素操作为 exp( (mn)^2)
我看到了另一个问题,但他只在一个索引上运行。我需要在不使用 for 循环的情况下对列索引和行索引进行操作。有没有办法做到这一点:
令 M (a,b) 为矩阵,大小为括号中的那个。我想将每个元素操作为 exp( (mn)^2)
利用bsxfun
M = exp( bsxfun( @minus, (1:a)', 1:b ).^2 );
在这里,使用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
解决方案更快并且消耗更少的内存 - 但这显示了如何生成矩阵下标矩阵。