如何编写一个内联函数,它将在MATLAB中接受两个参数

时间:2014-11-18 09:16:45

标签: matlab inline

我想编写一个内联函数,它接受两个参数,其中一个参数是一个向量。

>>nCk = @(n,k)(nchoosek(n,k));
>>nCk(3,1:2)
Error using nchoosek (line 29)
The second input has to be a non-negative integer.

如何让第二个参数接受一个向量。

3 个答案:

答案 0 :(得分:8)

如上所述,nchoosek仅允许第二个参数的整数输入。如果您确实想要创建内联函数,可以将循环折叠为arrayfun的调用,但是:

nCk = @(n,kVec)arrayfun(@(k)nchoosek(n,k),kVec);

并像这样使用:

nCk(5,0:5)

ans =

 1     5    10    10     5     1

答案 1 :(得分:3)

虽然它可能不是你想要的,但我认为这是我将使用for循环的一种情况,因为nchoosek只接受其k值的整数:

nCk = @(n,k)(nchoosek(n,k));
n = 3;

for k = 1:2
    disp(nCk(n,k));
end

虽然如果你这样做,那么内联语句可能是多余的,所以它可以简化为:

n = 3;

for k = 1:2
    disp(nchoosek(n,k));
end

答案 2 :(得分:0)

here,你可以看到你可以将第一个参数作为向量而不是第二个参数。

所以,你可以使用:

nCk = @(k,n)(nchoosek(k,n));

如果这对您有帮助