我想编写一个内联函数,它接受两个参数,其中一个参数是一个向量。
>>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.
如何让第二个参数接受一个向量。
答案 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)