MATLAB Concatenating Functions -
i have function @(x) f(x)
returns 3-by-3
matrix. want define function @(x) f(x)
returns 3*n-by-3*n
, f(x)
repeated n
times along diagonal, arbitrary n
.
this can done arrays (instead of functions) pretty simply:
n = 5; = repmat({magic(3)},[1,n]); b = blkdiag(a{:})
but functions, there subtlety since arguments need passed. naive attempts unsuccessful:
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]))
in general, there elegant ways concatenate/combine/repeat function?
Comments
Post a Comment