Jav*_*cia 5 matlab function matrix handle
我打算做的很简单,但我找不到合适的方法.我有一个函数句柄,它依赖于两个变量,例如:
f = @(i,j) i+j
Run Code Online (Sandbox Code Playgroud)
(但我的情况要复杂得多)
我想做的是创建一个矩阵M
M(i,j) = f(i,j)
Run Code Online (Sandbox Code Playgroud)
当然我可以使用嵌套循环,但我试图避免这些.我已经设法以一种非常简单的方式在Maple中做到了这一点:
f:=(i,j)->i+j;
M:=Matrix(N,f);
Run Code Online (Sandbox Code Playgroud)
(其中N是矩阵的维数)但我需要使用MATLAB.现在我坚持使用嵌套循环,但我非常感谢你的帮助!
使用bsxfun:
>> [ii jj] = ndgrid(1:4 ,1:5); %// change i and j limits as needed
>> M = bsxfun(f, ii, jj)
M =
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9
Run Code Online (Sandbox Code Playgroud)
如果你的函数f满足以下条件:
C = fun(A,B)接受任意大小的数组A和,但大小相等并返回相同大小的输出。输出数组中的每个元素都是and only对应元素的运算结果。还必须支持标量扩展,这样如果或是标量,则是将标量应用于另一个输入数组中的每个元素的结果。BCABfunABC
你可以处理掉ndgrid。只需将转置 ( .') 添加到第一个 ( i) 向量即可:
>> M = bsxfun(f, (1:4).', 1:5)
Run Code Online (Sandbox Code Playgroud)