我想创建一个匿名函数,它在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值传递给匿名函数)。
答案 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);