【发布时间】:2012-02-20 21:06:55
【问题描述】:
我想创建一个带有网格的多变量(这里是四个)函数,而不是为任何 X、Y 插值。假设这是我的概率密度函数,我计算它们在 X 上的边际。我使用这个函数来构建一个数据集。我的每个 M 文件都运行良好,至少我是这么认为的。但是当我让运行估计部分时,我收到一个错误。如果我的错误是可以弥补的,请您帮助我。
clear all;
%%%Some parameters
m1=0.01;
m2=0.02;
m3=0.001;
Z=zeros(10,20,10,5);
% MFILE1
%Create a four variable function
% function w=anemon(m1,m2,m3,X,Y,k,l)
% w=(m1*k+(m1+m2).*l)+X.*exp(-m3.*Y);
% end
% MFILE2
%Interpolate any (Xstar,Ystar) with a nonsence interpolation code
%I wrote it only for giving an example
% function p=interpanemon(Xstar,Ystar,m1,m2,m3,Z,X,Y,kk,ll)
% p=0;
% for i=1:length(X)-1
% for j=1:length(Y)-1
% if ((Y(j)<=Ystar)&&(Ystar<=Y(j+1)))&&((X(i)<=Xstar)&&(Xstar<=X(i+1)))
% p=(Z(i,j,kk,ll)+Z(i+1,j,kk,ll)+Z(i,j+1,kk,ll)+Z(i+1,j+1,kk,ll))/4;
% end
% end
% end
% return
% end
% MFILE3
%Create a model which I'm going to use for parameter estimation
% function loglik= modelanemon(p)
% global n x m2 m3 kk ll ;
% f =marjinteranemon(Ystar,p,m2,m3,Z,X,Y,kk,ll);
% loglik0=(-1)*(x.*log(f)+(n-x).*log(1-f));%minus likelihood
% loglik=sum(loglik0);
% end
%%
X=linspace(0,10,6);
Y=linspace(0,20,6);
for k=1:10
kk=k-1;
for l=1:5
ll=l-1;
for i=1:length(X)
for j=1:length(Y)
Z(i,j,k,l)=anemon(m1,m2,m3,X(i),Y(j),kk,ll);
end
end
end
end
%%%Now run all M-Files for self control
anemon(m1,m2,m3,X,Y,4,5)
interpanemon(3,4,m1,m2,m3,Z,X,Y,4,5)
marjinteranemon(3,Z,X,Y,m1,m2,m3,4,5)
%STARTING PROBLEM PART
%SCRIPT fminsearch, I will be greatful if you have any advise. This part of % code doesn't work
% global n Ystar x kk ll m1 m2 m3;
% m1=0.1;
% m2=0.2;
% m3=0.3;
% Ystar=[1 3 6 9 12 18]';
% kk=[1 1 2 3 3 4]';
% ll=[0 0 1 3 4 5]';
% y=marjinteranemon(Ystar,Z,X,Y,m1,m2,m3,kk,ll);
% n=100;
% x=y.*n;
% pstart=5;
% [p1,modelvalue]=fminsearch(@modelanemon,pstart);
【问题讨论】:
-
你能发布你看到的错误吗?我从
anemon函数中得到:??? Undefined function or variable 'mu'.,应该是m3? -
@macduff 感谢您的快速回答!错误休闲:'==> modelanemon 在 3 f =marjinteranemon(Ystar,p,m2,m3,Z,X,Y,kk,ll); ==> fminsearch 在 205 处出错 fv(:,1) = funfcn(x,varargin{:});'
-
mu的值应该是多少?如果这很明显,请原谅我。我也错过了
marjinteranemon()这个功能 -
我在你的@macduff 通知后修复了它并替换为 m3:)
-
这解决了您的问题吗?另外,作为个人恩惠,我可以查看
marjinteranemon()函数吗?
标签: matlab parameters estimation