jyliao 发表于 2016-8-21 08:56 
function pv = ft_ex
th_L=-0.5; th_H=1; xt = 0.5; mt = 1;
PL = normcdf(xt*(th_L-mt)); PH = normcdf( ...
您好!谢谢您的回复!我发现之前的做法有错误,这两天受您的启发改了改,但是仍然有错误,能帮我看一下吗?
%前面由循环语句得出来ft的形式是
ft = @(t) 0+(t>th_H).*(normcdf((t-mt(j,i))/xt(i))-PH)/(1-PH); %或者
ft = @(t) (t>=th_L)+(t<th_L).*(normcdf((t-mt(j,i)))/xt(i))/PL; %或者
ft = @(t) 0+(t>=th_L & t<=th_H).*(normcdf((t-mt(j,i))/xt(i))-PL)/(PH-PL)+(t>th_H);
gt=@(t,h) ft(t)*(normpdf(sqrt(ys(i))*(h-t)));
Tt = @(h) sqrt(ys(i))*integral(@(t) gt, -inf, inf)- 0.5; %我想就gt这个二元函数关于t取期望,得到一个h的函数,带到下面的方程里面找零点
pv = fzero(@(p) Tt(p), -10000);
%但是报错了:
错误使用 fzero (line 289)
FZERO 无法继续,因为用户提供的 function_handle ==> @(p)0.5-Tt(p) 失败,出现下面的错误。
输入函数必须返回 'double' 或 'single' 值。找到 'function_handle'。
出错 trial2 (line 131)
pv = fzero(@(p) 0.5-Tt(p), -10000);