Matlab 为什么在这个函数中计算重心权重时会出现错误?

Matlab 为什么在这个函数中计算重心权重时会出现错误?,matlab,octave,interpolation,Matlab,Octave,Interpolation,我在Octave/Matlab中实现了以下内容,用于计算重心权重: function omega = bary_gewichte(m) omega = nan(size(m+1)); for k = 0:m+1 omega(k) = ((-1).^k) .* (factorial(m))./(factorial(k) .* factorial(m-i)); endfor endfunction 但我得到了一个错误: error: factorial: all N must be real

我在Octave/Matlab中实现了以下内容,用于计算重心权重:

function omega = bary_gewichte(m)
omega = nan(size(m+1));
for k = 0:m+1
  omega(k) = ((-1).^k) .* (factorial(m))./(factorial(k) .* factorial(m-i)); 
endfor
endfunction
但我得到了一个错误:

error: factorial: all N must be real non-negative integers

但我想所有的结果对于正m来说都不是负的。如何使此函数正常工作?

以下代码正常工作:

function omega = bary_gewichte(m)
  omega = nan(size(m+1));
  for k = 0:m
    omega(k+1) = ((-1).^k) .* (factorial(m))./(factorial(k) .* factorial(m-k)); 
  endfor
endfunction
请注意,您为k=0:m+1编写了
。在上一次迭代中,我们得到了状态
m-k=-1
,但是
factorial(-1)
是未定义的。同样在Matlab中,索引从1开始。
我不知道你的任务,所以我不知道这是否解决了你的问题。

你的循环索引是
k
,但你调用了
factorial(m-I)
。但现在我得到了:错误:ω(0):下标必须是整数1到(2^63)-1或逻辑好的,我需要一个索引移位。0:m+1到1:m