假设我们要计算斯特林近似在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
答案怎么能我这样做,函数可以与数组一起工作?
假设我们要计算斯特林近似在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
答案怎么能我这样做,函数可以与数组一起工作?
您需要添加元素方面的运营商:
[email protected](n)sqrt(2*n*pi) .* exp(-n) .* n.^n .* exp(1./(12*n));
现在搅拌([2 3 5])会工作。
您需要调查元素明智的运算符,例如.*
和./
。请参阅http://www.mathworks.co.uk/help/techdoc/ref/arithmeticoperators.html。
我知道这一个,但从问题很明显,我想访问每个元素,并计算它的斯特林的近似值,抱歉,但它对我没有多大帮助 – 2012-02-11 21:40:55
@dato:如果你想要上面的代码工作并行数组中的每个元素,那么您肯定需要将其转换为'。*','。/'等。如果这不是问题,那么请编辑您的问题以使其更清楚。 – 2012-02-11 21:42:21
你也可以做到这一点,而不需要在函数中插入基于元素的操作符。
% 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]);
这种方法不会使用元素明确的运算符混淆函数。
您也可以在不插入元素明智的操作符的情况下做到这一点。请参阅下面的答案。 – eternaln00b 2012-02-11 22:16:36