MATLAB创建矩阵M = F(i,j)

Fag*_*ain -1 matlab function matrix

假设我有2个变量的函数,F(i,j)这取决于矩阵的行索引和列索引,我想用值填充矩阵M_ij = F(i,j)

当然,这是有可能通过做一个循环ij,甚至只有i或者j如果函数F可以向量化,但我想知道整洁的方式做到这一点.

Dan*_*Dan 5

没有看到你的回答是不可能的,F但我们假设它F是矢量化的,例如

F = @(x,y)x+y;
Run Code Online (Sandbox Code Playgroud)

然后你可以使用ndgrid:

[I,J] = ndgrid(1:m,1:n);
M = F(I,J)
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,这也适用于您的情况,您可以使用以下内容直接向量化函数bsxfun:

M = bsxfun(@plus, 0:m-1, 1:n);
Run Code Online (Sandbox Code Playgroud)