如何将元胞索引作为输入参数传入函数,使函数内元胞可直接使用该索引?
解决Matlab中传递元胞索引到自定义函数的问题
问题核心在于:你用{:,1,2}传递的是包含索引元素的cell数组,但Matlab的元胞索引语法需要将:、1、2作为独立参数传入,而非打包成cell。下面提供两种可行的解决方法:
方法1:直接传递索引参数(推荐)
调用函数时不用大括号包裹索引,直接把索引元素作为独立参数传入,函数内部的varargin会自动收集这些参数,再通过x(varargin{:})完成索引:
f(:,1,2) % 正确调用方式 function y = f(varargin) x = num2cell(reshape(1:24, [2,3,4])); y = x(varargin{:}); % 等价于x(:,1,2) end
方法2:传递打包后的索引并在函数内展开
如果你的索引是预先打包在cell数组中的(比如动态生成的索引集合),可以在函数内部用{:}将cell数组展开为独立索引参数:
f({:,1,2}) % 现在可正常生效 function y = f(idxCell) x = num2cell(reshape(1:24, [2,3,4])); y = x(idxCell{:}); % 把cell里的索引元素展开成独立参数 end
内容的提问来源于stack exchange,提问作者ThomasIsCoding
相关产品推荐
相关产品推荐

