2015-10-18 223 views
0

我正在使用MATLAB来分析一个简单的fminunc代码,我发现当我再次分析代码时,分析器显示不同的算法。 这是为什么?代码如下。为什么相同的MATLAB代码运行不同的算法?

clear; 
clc; 
alpha = 2; 
beta = 2; 
nobs = 100; 
start = [1;1;1]; 
options = optimoptions('fminunc','GradObj','off','Algorithm','quasi-newton','Display','off'); 
x = random('unif',1,10,nobs,1); 
u = random('norm',0,4,nobs,1); 
y = alpha + beta * x + u; 

lnL = @(para) (1/2) * nobs * log(2 * pi) +... 
    (1/2) * nobs * log(para(3))+... 
    (1/2) * (para(3))^(-1) * sum((y - para(1) - x * para(2)).^2); 

para_hat = fminunc(lnL,start,options); 

而剖析器的图像如下。

enter image description here enter image description here

+0

嗨,@rayryeng。我不太明白你说什么。你能详细解释一下吗?谢谢! – LiuHao

+0

每次运行代码时,由于您选择了随机函数,“x”和“u”是不同的。每次运行都不同,这就是运行时间不同的原因。如果你制作'x'和'u' **确定性**(即每次运行代码时** ** **),运行时间将相对相同。 – rayryeng

回答

0
x = random('unif',1,10,nobs,1); 
u = random('norm',0,4,nobs,1); 

这意味着代码会选择每次运行时随机nobs。当然,每次结果都会有所不同。

相关问题