全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
4153 12
2011-03-24
clear;clc;close all
[p,As] =deal(8,0.8);
[m,s] = deal(120,10);
lam =@(q)(2*p*(1-arrayfun(@(t)quad(@(x)normpdf(x,m,s),0,t),q))-(2+As)*p*q.*normpdf(q,m,s))./2;
q =linspace(1,10000);
qq=interp1(lam(q),q,0.8)


[c,As] =deal(2,0.8);
[m,s] = deal(120,10);
lam =@(q)2*c./(2*(1-arrayfun(@(t)quad(@(x)normpdf(x,m,s),0,t),q))-(2+As)*q.*normpdf(q,m,s));
q = 1:0.01:100;
qq=interp1(lam(q),q,7.8)

它老是出现说:??? Error using ==> interp1
The values of X should be distinct.
请问这是怎么回事啊
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2011-3-24 09:48:22
1# ntf198602

第二个程序中将qq=interp1(lam(q),q,7.8)  改为 qq=interp1(q,lam(q),7.8), 再试试!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-3-24 09:52:10
1# ntf198602
第一个程序  将qq=interp1(lam(q),q,0.8)  改为 qq=interp1(q,lam(q),1.8)。 这是因为YI = INTERP1(X,Y,XI) ,您将自变量和因变量弄混了,另外,0.8不在您的差值区间内,可以将0.8修改为1到10000之间的任何一个数,程序就可以顺利执行了。祝您成功!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-3-24 10:00:02
非常感谢小可儿,但是下面的程序为什么可以运行呢?我就是模仿他的,里面的qq = interp1(lam(q),q,0.8),跟我的一样啊
clear;clc;close all
[p,c] =deal(8,2);
[m,s] = deal(120,10);
lam = @(q) (2*p*(1-arrayfun(@(t)quad(@(x)normpdf(x,m,s),0,t),q))-2*c)./(p*q.*normpdf(q,m,s)) -2;
q = linspace(1,100);
semilogy(q,lam(q));
qq = interp1(lam(q),q,0.8)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-3-24 10:12:57
上面那个例子中,我搞不清楚qq = interp1(lam(q),q,0.8)的真正意思,是当lam(q)=0.8时,求q的值吗?而如果是qq=interp1(q,lam(q),0.8),此时是不是求当q=0.8时,lam(q)呢?我其实是想求前一种,即当lam(q)=0.8时,求q的值。不知我上面的两个程序是否可以达到这个目的。如果改该怎么改呢?谢谢了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-3-24 10:38:52
5# ntf198602 呵呵!!你的理解:qq = interp1(lam(q),q,0.8)的真正意思,是当lam(q)=0.8时,求q的值,是正确的。我刚回答的匆忙了点,搞错了,两个地方都 不用改!
真正问题可能就出在lam的表达式上面,你看下lam和q的曲线图(plot(lam(q),q))就知道问题了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群