- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 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/
如果没有涵盖所有可能的音符,我想编写一个算法,在给定的 Octave 音阶中构建规则的 3 键钢琴和弦进行,然后转移到下一个 Octave 音阶。例如: Cmaj 键会给出其进程中的所有音符/和弦,因
我正在使用类似于 Matlab 的 Linux 中的 Octave 4.0 是否可以在极坐标图上使用不同范围的数字,并让它们与度数一起显示? 正常的极坐标图从 0-359 度变化在图像中以黑色显示,我
我在 Octave 中有这样的向量: [ 4 5 1 2 3 6 ] 是否有任何函数返回该向量的 n 个最大元素,在这种情况下,最大的三个是 6、5 和 4? [6 5 4] Octave max 函
我是一名优秀的程序员,十分优秀!