假设我们想在matlab中计算n阶乘的斯特林近似,对任意n值的简单计算将是
sqrt(2*n*pi) * exp(-n) * n^n * exp(1/(12*n))
但我们想要使用数组呢?例如我们的代码
stir([2 3 5])
应该工作,必须给出这样的答案
ans =
2.0007 6.0006 120.0026
我怎么能这样做,函数可以用于数组?
答案 0 :(得分:3)
您需要添加元素操作符:
stir=@(n)sqrt(2*n*pi) .* exp(-n) .* n.^n .* exp(1./(12*n));
现在搅拌([2 3 5])将起作用。
答案 1 :(得分:2)
您也可以在不在函数中插入元素操作符的情况下执行此操作。
% Create a function handle which takes one argument n and calculates the stirling approx.
stir = @(n)sqrt(2*n*pi) * exp(-n) * n^n * exp(1/(12*n))
% Use "arrayfun" to perform the calculation on each array element.
arrayfun(stir, [2 3 5]);
这种方法不会使用逐元素运算符来混淆函数。
答案 2 :(得分:1)
您需要调查以元素为单位的运算符,例如.*
和./
。请参阅http://www.mathworks.co.uk/help/techdoc/ref/arithmeticoperators.html。