非常感謝,首先。第一個代碼運行良好:
函數f = malibu(m1,m2,m3,k,l,t) f =(m1。* k +(m1 + m2)。* l)。* exp(-m3。*噸); end矢量化函數fminsearch
function loglik= modelmalibu(p)
global k l t x n m2 m3;
f =malibu(p,m2,m3,k,l,t);
if f==0;
loglik0=0;
else
loglik0=(x.*log(f)+(n-x).*log(1-f));%minus likelihood
end
loglik=sum(-loglik0);
end
clear all;
global n t x k l m2 m3;
m1=0.1;
m2=0.2;
m3=0.3;
t=[1 3 6 9 12 18]';
k=[1 1 2 3 3 4]';
l=[0 0 1 3 4 5]';
y=meltem(m1,m2,m3,k,l,t);
n=100;%trial
x=y.*n;%correct replies
pstart=0.3;
[p1,modelvalue]=fminsearch(@modelmalibu,pstart);
但是,類似的代碼更多的變量給出了錯誤。
function w=anemon(m1,m2,m3,X,Y,k,l)
w=(m1.*k+(m1+m2).*l)+X.*exp(-m3.*Y);
end
function loglik= modelanemon(p)
global n x m2 m3 X Y k l ;
f =anemon(p,m2,m3,X,Y,k,l);
if f==0;
loglik0=0;
else
loglik0=(x*log(f)+(n-x)*log(1-f));%minus likelihood
end
loglik=sum(-loglik0);
end
clear;
global n x Ydata kdata ldata m1 m2 m3;
%parameters
m1=0.002;
m2=0.0001;
m3=7;
%given data
Xdata=[1 3 6 9 10 12]';
Ydata=[11 13 41 81 121 181]';
kdata=[1 1 2 4 5 4]';
ldata=[1 1 3 3 4 5]';
y=anemon(m1,m2,m3,Xdata,Ydata,kdata,ldata);
n=10;
x=y.*n;
pstart=2;
[pbest,modelvalue]=fminsearch(@modelanemon,pstart);
我其實是試圖用你的建議,但如果我會寫的不平等,而不是˚F== 0,第一個代碼塌下來爲好。
看起來你所有的「Mfile」只包含註釋。你在這些文件的每一行前都有真正的「%」。如果是這種情況,那麼你的代碼沒有太大的作用。否則,請修改您的帖子。 – Kavka 2012-02-26 03:01:11
@Kavka,謝謝你的評論。我只想強調M-Files的一部分,但是我在你的評論後看到這個想法有多混亂。我按照你的建議編輯它。 – user1018331 2012-02-26 08:32:28
我有一個問題,理解你的問題是什麼。你能澄清嗎? - 也許在一個小片段,或一個具體的例子。 – bdecaf 2012-02-26 08:58:36