如何通过内置函数而非索引访问Matlab数组的第n个元素?
问题解答
Matlab没有内置的nth(a, n)这类直接获取数组第n个元素的函数,不过可以通过以下几种内置方法解决你的匿名函数场景需求:
方法1:使用底层索引函数subsref
Matlab中所有数组索引操作(比如a(n))本质上都是调用subsref函数实现的,你可以直接在匿名函数里用它替代索引语法:
f = @(mumble, n) subsref(blurf(mumble), struct('type', '()', 'subs', {n}));
这里struct('type', '()', 'subs', {n})定义了索引类型(圆括号索引)和对应下标参数,完全等价于blurf(mumble)(n)的效果。
方法2:升级Matlab版本(R2020b+)
从Matlab R2020b版本开始,官方支持了函数输出的直接链式索引,也就是你原本想写的blurf(mumble)(n)这类语法,不需要额外函数就能直接运行。如果你的Matlab版本符合要求,这是最简洁的解决方案。
如果你不想升级版本也不想自己写自定义函数,subsref就是最贴合需求的内置替代方案。
内容的提问来源于stack exchange,提问作者Robert Dodier
相关产品推荐
相关产品推荐

