从文件中的现有向量函数创建匿名标量函数

时间:2015-09-24 01:54:13

标签: matlab parameter-passing anonymous-function

我想创建一个匿名函数,它在Matlab中获取文件中现有向量函数的第一个输出变量。例如,单独的M文件中的现有向量函数是

var startTime, endTime,i=0;

$(".btn-number").on('mouseup', function () {
    endTime = new Date().getTime();

    if (endTime - startTime < 250) {
        longpress = false;
        console.log('< 250');
    } else if (endTime - startTime >= 300) {
        longpress = true;
        console.log('>= 300');
    }
    console.log('\n' + i++);
});

$(".btn-number").on('mousedown', function () {
    startTime = new Date().getTime();
});

是否可以从myfun()创建一个带有y1值的匿名标量函数?感谢您的任何建议。

P.S。我这样做是因为实际上我的原始功能更像是

function [y1,y2] = myfun(x1)
    y1 = x1;
    y2 = x1^2;
end

我想创建一个只有一个参数x1的标量函数y1(将一个已知的x2值传递给匿名函数)。

2 个答案:

答案 0 :(得分:0)

我想我知道你在寻找什么,但有点不清楚。如果你开始使用这样的函数:

function [y1,y2] = myfun(x1,x2)
  y1 = x1+x2;
  y2 = x1^2+x2^2;
end

你可以创建一个包装器匿名函数,其固定值为x2(固定在创建匿名函数时的任何变量),如下所示:

newFcn = @(x1) myfun(x1, x2);

现在,您可以使用它来获取您想要的myfun的两个输出中的任何一个。例如:

y1 = newFcn(x1);        % Gets the first output
[~, y2] = newFcn(x1);   % Gets the second output
[y1, y2] = newFcn(x1);  % Gets both

答案 1 :(得分:0)

基于@David的方法,我调整了我的代码并且运行良好。

function y = myfun(x1,x2)
    y1 = x1+x2;
    y2 = x1^2+x2^2;
    y = [y1 y2];
end

和匿名函数output1和output2分别返回y1和y2。

paren=@(y,varargin) y(varargin{:});
output1 = @(x1) paren(myfun(x1,x2), 1);
output2 = @(x1) paren(myfun(x1,x2), 2);