Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 为什么相同的MATLAB代码使用不同的算法运行?_Algorithm_Matlab - Fatal编程技术网

Algorithm 为什么相同的MATLAB代码使用不同的算法运行?

Algorithm 为什么相同的MATLAB代码使用不同的算法运行?,algorithm,matlab,Algorithm,Matlab,我正在使用MATLAB分析一个简单的fminunc代码,我发现当我再次分析代码时,分析程序会显示不同的算法。 为什么? 代码如下 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

我正在使用MATLAB分析一个简单的fminunc代码,我发现当我再次分析代码时,分析程序会显示不同的算法。 为什么? 代码如下

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);
profiler的图像如下所示

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);


这意味着代码将在每次运行时随机选择一个
nobs
。当然,每次的结果都不一样。

hi,@rayryeng。我不太明白你说的话。你能详细解释一下吗?谢谢您!每次运行代码时,
x
u
都不同,因为您选择了随机函数。每次运行的时间都不同,这就是运行时间不同的原因。如果使
x
u
具有确定性(即每次运行代码时都相同),则运行时间将相对相同。