MATLAB级联函数

MATLAB级联函数,matlab,function,concatenation,Matlab,Function,Concatenation,我有一个函数@x fx,它返回3乘3的矩阵。我想定义另一个函数@xfx,它返回一个3*n乘3*n的值,Fx沿对角线重复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) blkdi

我有一个函数@x fx,它返回3乘3的矩阵。我想定义另一个函数@xfx,它返回一个3*n乘3*n的值,Fx沿对角线重复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])) 

一般来说,有没有优雅的方法来连接/组合/重复一个函数?

为什么必须使用函数句柄?为什么不使用嵌套函数?函数句柄很难调试。你可能会发现一些有用的提示。相关:你完全正确@Dev iL。。。我没有理由需要函数句柄,连接/组合/重复函数的优雅方式当然是只定义一个函数,而不是尝试用函数句柄编写代码。我想我陷入了一种思维模式。谢谢你的帮助!谢谢@biker的链接!