在 filedatastore 中处理多个输出和输入变量的函数句柄

function handle to function with multiple output and input variables in filedatastore

我正在尝试使用自定义读取功能从多个大文件构建一个 fileDatastore。 这应该像

fds = fileDatastore(location, 'ReadFcn', @fcn)

我使用一个包含多个完整文件字符串的元胞数组来定位,这应该没问题。 我根本不知道如何处理具有多个输入和输出变量并且看起来像这样的读取函数:

[A, B, C] = function(filestring, x, y, z)

我怎样才能完成这项工作? 提前致谢!

您可以使用“anonymous function”来完成部分。匿名函数可以让你调整函数的原型,在值中“绑定”,所以一个难题就是这样做:

x = 7; y = 42; z = -1;
fcn = @(filename) myfunction(filename, x, y, z);

这会生成一个函数 fcn,您可以像 fcn('somefile') 那样调用它,效果是 myfunction('somefile', 7, 42, -1)

不幸的是,有一个转折 - fileDatastore 需要一个仅返回单个输出的函数。这不是您可以使用匿名函数修复的问题,因此您需要在 MATLAB 代码文件中编写一个函数来执行以下操作:

function out = wrapMyFunction(filename, x, y, z)
    [A,B,C] = myfunction(filename, x, y, z);
    out = {A,B,C};
end

然后使用

fcn = @(filename) wrapMyFunction(filename, x, y, z);