24小时热门版块排行榜    

查看: 479  |  回复: 4
当前主题已经存档。

sgyin

铁杆木虫 (正式写手)

[交流] 请教matlab问题

为什么我用matlab算出来的粒径数值最后一位都是7?
r
1.3857
1.4327
1.4727
1.5027
1.5237
1.5417
1.5627
1.5767
1.5807
1.5887
1.6027
1.6107
1.6177
1.6257
1.6357
1.6407
1.6447
1.6497
1.6587
1.6657
程序如下:
[m,n]=size(aa);
for t=1:8,%该for循环用于曲线平滑,以及将不必要的数据截掉.t为平滑次数.
        for s=(length(aa(:,2))-2):-1:2,
        sp=csapi([4,3,1],[aa(s+2,2),aa(s+1,2),aa(s-1,2)]);aa(s,2)=fnval(sp,2);
        end
    end
   wavelength=aa(1:m-40,1);absorptance=aa(1:m-40,2);E_eV=(h*c./(wavelength*1e-9))./e;
   particlesize=1/2./(50000*E_eV-157955).*(-5289+(-72372280279+22918000000*E_eV).^(1/2));%能量到粒径的转换
   psize=particlesize(1):.001:particlesize(length(particlesize));
   sp=csapi(particlesize,absorptance,psize); %%%%%%%%%plot(psize,sp,'--r'),xlabel('粒径'),ylabel('吸光度'),title('吸光度和粒径的关系(红色为插值结果)');%csapi()三次样条插值,fnplt()绘制插值结果。
   spd=diff(sp)./diff(psize);psize1=psize(1:length(psize)-1);%spd即吸光度对粒径的导数。
   V=4/3*3.1415926*psize1.^3; n_r=-spd./V;
   i=find(n_r<-1e-3&n_r>-1e+4);i=max(i);n_r(1:i)=NaN;
   j=find(n_r==max(n_r));psize1(j)

[ Last edited by csfn on 2008-12-29 at 20:23 ]
回复此楼

» 猜你喜欢

&amp;amp;lt;ahref=&amp;amp;quot;http://www.TickerFactory.com/&amp;amp;quot;&amp;amp;gt;&amp;amp;lt;imgborder=&amp;amp;quot;0&amp;amp;quot;src=&amp;am
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dnp

荣誉版主 (知名作家)

小木虫浪子

优秀版主

★ ★
csfn(金币+2,VIP+0):平安夜,圣诞,元旦节日发主题帖或应助,额外加金币一个祝福~~
你将所有的r中的数据类型在数据显示窗口中改为longG试试看,我看不懂你写的程序,如果不是数据显示格式的问题的话,就建议你看一下你的计算过程是不是有问题。
你在那里面既用平滑又用微分的,计算数据很难把握,而且还平滑很多次,因此,什么情况都能发生。
What would Jesus do?
2楼2007-12-24 21:20:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sgyin

铁杆木虫 (正式写手)

下面是我用另外一组数据算出来的结果,第一列是long型,第二列是short,我觉得是那个样条平滑处理方法导致的,对它的平滑确定性没把握。明显看出数据的尾部都一样,这是不是说明这种算法有效数字只有前面的5位啊?不知道大家有什么更好的平滑算法???谢谢!
1.31675586473640         1.3168
1.44455586473641         1.4446
1.54515586473641         1.5452
1.57215586473640         1.5722
1.58205586473640         1.5821
1.59265586473640         1.5927
1.60305586473641         1.6031
1.61725586473640         1.6173
1.62705586473641         1.6271
1.63455586473640         1.6346
1.64025586473640         1.6403
1.64855586473640         1.6486
1.66195586473641         1.662
1.66535586473641         1.6654
1.67405586473641         1.6741
1.68485586473640         1.6849
1.69125586473641         1.6913
1.70025586473641         1.7003
1.70755586473640         1.7076
1.71055586473641         1.7106
&amp;amp;lt;ahref=&amp;amp;quot;http://www.TickerFactory.com/&amp;amp;quot;&amp;amp;gt;&amp;amp;lt;imgborder=&amp;amp;quot;0&amp;amp;quot;src=&amp;am
3楼2007-12-25 09:08:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dnp

荣誉版主 (知名作家)

小木虫浪子

优秀版主


csfn(金币+1,VIP+0):Thanks~
平滑算法非常多,这个可能是跟你的数据有点关系。
你先分析一下你的数据,看一下有什么特点然后再选择适当的平滑方法,最简单的就是移动窗口平均法。
What would Jesus do?
4楼2007-12-25 13:05:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sgyin

铁杆木虫 (正式写手)

那请问虫虫dnp,移动窗口平均法的具体算法是怎样的呢?谢谢了啊,百度,google都没找到
还有我现在知道了为什么最后粒径数据后几位都一样了,因为前面的插值精度只有0.001
&amp;amp;lt;ahref=&amp;amp;quot;http://www.TickerFactory.com/&amp;amp;quot;&amp;amp;gt;&amp;amp;lt;imgborder=&amp;amp;quot;0&amp;amp;quot;src=&amp;am
5楼2007-12-26 23:47:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 sgyin 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见