我有一个返回@(x) f(x)
矩阵的函数3-by-3
。我想定义另一个函数@(x) F(x)
,它返回3*n-by-3*n
,f(x)
沿对角线重复n
次,任意n
。
这可以通过数组(而不是函数)完成:
n = 5;
A = repmat({magic(3)},[1,n]);
B = blkdiag(A{:})
但是对于函数来说,由于需要传递参数,因此存在细微之处。我天真的尝试没有成功:
f=@(x) magic(3);
F=@(x) blkdiag(repmat({f(x)},[1,n]))
F=@(x) blkdiag({repmat({f(x)},[1,n])})
F=@(x) blkdiag(repmat({feval(@(xx) f(xx),x)},[1,n]))
一般来说,是否有优雅的方法来连接/组合/重复一个函数?