MATLAB-直接使用矩阵的索引,而不使用循环

MATLAB-直接使用矩阵的索引,而不使用循环,matlab,matrix,vectorization,Matlab,Matrix,Vectorization,我看到了,但他只操作一个索引。我需要在不使用for循环的情况下对列和行索引进行操作。 有没有办法做到这一点: 设M(a,b)为矩阵,大小为括号内的大小。我想将每个元素操作为exp((m-n)^2)使用bsxfun M = exp( bsxfun( @minus, (1:a)', 1:b ).^2 ); 在这里,可以使用meshgrid: >> a = 5; b = 4; % Some example dimensions >> [n, m] = meshgrid(1:b

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


设M(a,b)为矩阵,大小为括号内的大小。我想将每个元素操作为exp((m-n)^2)

使用
bsxfun

M = exp( bsxfun( @minus, (1:a)', 1:b ).^2 );
在这里,可以使用
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
解决方案速度更快,占用内存更少,但这说明了如何生成矩阵下标的矩阵

是的,有很多方法。但是,如果你没有更明确地说明你想做什么,也没有展示你的原型代码,你将得到的最接近答案就是这个评论中的第一句话。好的。设M(a,b)为矩阵,大小为括号内的大小。我想将每个元素作为exp((m-n)^2)进行操作。瞧——一旦您澄清了需求,有用的答案就会出现+1,虽然对于较大的
a
和/或
b
@RodyOldenhuis,内存占用变得不可接受,但是,哦,没有考虑到这一点。这比
bsxfun
慢,并且消耗更多内存。只是说,'.@EitanT:是的,对于大型a/b来说速度较慢,但我想向OP展示他们如何生成索引矩阵。这实际上是一个非常棒的命令。我正在使用它,它让事情变得容易多了。