gpt4 book ai didi

matlab - 在 Octave 音程中使用 varargin

转载 作者:行者123 更新时间:2023-12-02 11:33:23 25 4
gpt4 key购买 nike

我正在尝试在 Octave 音阶中使用varargin,但似乎遇到了一些问题。这是我的代码:

into2.m

function  [result] = into2(x)
result = x*2;
endfunction

into3.m

function  [result] = into3(x)
result = x*3;
endfunction

calc.m

function  [result1] = calc(varargin, x)
fn1 = varargin{1};
fn2 = varargin{2};
result1 = fn1(x) + fn2(x);
endfunction

test1.m(主函数)

function  [] = test1()
result= calc(@into2,@into3,2);
disp(result);
endfunction

test1() 是调用 calc() 并传递两个函数句柄和一个标量的主函数。我希望 varargin 应该有 @into2,@into3 并且 x 应该有 2。但是,varargin 具有 @into2,x 具有 @into3。我尝试更改顺序,但传递的两个函数不会进入一个参数;每个参数只有一个功能。我相信 varargin 应该有一个单元格,但似乎不起作用。我使用的是 Octave 4.2。 (将MATLAB放入标签中,因为两者应该类似。)

最佳答案

问题是 varargin 必须作为函数的最后输入参数出现。如果它不是最后一个,则将其简单地视为输入参数named varargin。来自 documentation :

If the special parameter name varargin appears at the end of a function parameter list it indicates that the function takes a variable number of input arguments

因此,实际上,您的 calc 函数在功能上与:

function result = calc(y, x)

您需要做的是将 varargin 放在输入参数列表的最后,并修改 calc 中的逻辑。

function result = calc(x, varargin)
fn1 = varargin{1};
fn2 = varargin{2};

result = fn1(x) + fn2(x);
end

顺便说一句,目前尚不清楚为什么在这种情况下需要使用 varargin,因为您实际上没有可变数量的输入。

关于matlab - 在 Octave 音程中使用 varargin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41687602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com