声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1975|回复: 10

[编程技巧] 挑战matlab积分极限

[复制链接]
发表于 2006-6-9 00:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我遇到一个积分,是被引用较多的一个误码率公式,但用matlab积分,怎么也得不到图中曲线,我到现在没解决,请教高手

在Matlab积分仿真极限1中主要是对以前发的作补充。纵轴是求出的值,采用log为底画得<br>调用的函数为semilogy。   
个人觉得matlab在求高阶指数积分有缺陷?
提示:纵坐标为对数时,一般用semilogy,详见help。但也要注意,它给出的横坐标也是对数的。是不是在代入横坐标时先处理为对数值?欢迎大家讨论
经过一段时间,还是自己解决。其实只要看清楚它问的就行,问题是我们常常忽略一些细节。到这个论坛不错,给我提供许多有价值的东东

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

 楼主| 发表于 2006-6-11 16:44 | 显示全部楼层
<P>看来它的确困难?版主能给建议?</P>
发表于 2006-6-11 19:44 | 显示全部楼层

回复:(xianuser)挑战matlab积分极限

纵坐标是什么?还有erfc表示什么意思?
[此贴子已经被作者于2006-6-11 19:45:52编辑过]

 楼主| 发表于 2006-6-11 22:49 | 显示全部楼层
纵坐标是误码率,它是以10为底的坐标轴。<BR>erfc是互补误差函数 在matlab中用 help erfc 它会给出详细解释,这儿反而不好用文字表示
 楼主| 发表于 2006-6-15 19:48 | 显示全部楼层

请教新版主

我遇到的积分真的没解?
发表于 2006-6-15 22:28 | 显示全部楼层
大致这个意思,但是结果与你的不一样,没细查,没时间了。思路应该一样<br>function ddddd<br>clc<br>k=3;<br>L=255;<br>A=(1+L)/L;<br>gamma=[2:10];<br>M=8;<br>y1=[-sqrt(15)/5,0,sqrt(15)/5];<br>for i=1:length(gamma)<br>    f1=inline(['1-','(.5*(erfc(y*200/sqrt(2)))).^(',num2str(M),'-1',')'],'y');<br>    fva=f1(y1);<br>    f21=inline(['200*',num2str(fva(1)),'.*exp(-(200*y+',num2str(A),'*',num2str(gamma(i)),')','.^2/2)/sqrt(2*3.1416)'],'y');<br>    f21=f21(y1(1));<br>    f22=inline(['200*',num2str(fva(2)),'.*exp(-(200*y+',num2str(A),'*',num2str(gamma(i)),')','.^2/2)/sqrt(2*3.1416)'],'y');<br>    f22=f22(y1(2));<br>    f23=inline(['200*',num2str(fva(3)),'.*exp(-(200*y+',num2str(A),'*',num2str(gamma(i)),')','.^2/2)/sqrt(2*3.1416)'],'y');<br>    f23=f23(y1(3));<br>    f(i)=(5*f21+8*f22+5*f23)/9;%三点gauss积分公式<br>end<br>format long g<br>plot(f)<br>
[此贴子已经被作者于2006-6-16 1:01:58编辑过]

 楼主| 发表于 2006-6-16 08:51 | 显示全部楼层
谢谢,虽然还有一段距离,但有点模样
 楼主| 发表于 2006-6-17 09:14 | 显示全部楼层
<P>经检查,发现六楼在计算<BR>f21=inline(['200*',num2str(fva(1)),'.*exp(-(200*y+',num2str(A),'*',num2str(gamma(i)),')','.^2/2)/sqrt(2*3.1416)'],'y');<BR>    f21=f21(y1(1));<BR>时,对sqrt(2×k×Eb/N0)的公式表达有错。<BR>并且积分有限,得出结果有误。<BR>希望有更好地解决方法<BR></P>
发表于 2006-6-17 12:02 | 显示全部楼层
function ddddd<br>clc<br>k=3;<br>L=255;<br>A=(1+L)/L;<br>gamma=[6:3:30];<br>M=8;<br>y1=[-sqrt(15)/5,0,sqrt(15)/5];<br>for i=1:length(gamma)<br>    fq1=inline(['(1-','(.5*(erfc(y./sqrt(2)))).^(',num2str(M),'-1','))','.*exp(-(y+',num2str(A),'*',num2str(sqrt(2*gamma(i))),')','.^2/2)/sqrt(2*3.1416)'],'y');<br>    fg1=inline(['1000*','(1-','(.5*(erfc(1000*y./sqrt(2)))).^(',num2str(M),'-1','))','.*exp(-(1000*y+',num2str(A),'*',num2str(sqrt(2*gamma(i))),')','.^2/2)/sqrt(2*3.1416)'],'y');<br>    fg2=fg1(y1);<br>    fgauss(i)=(5*fg2(1)+8*fg2(2)+5*fg2(3))/9;<br>    fq2(i)=quadl(fq1,-1000,1000);<br>end<br>format long g<br>disp(['高斯三点积分公式的求解结果fgauss=[',num2str(fgauss),']'])<br>disp(['数值积分quadl命令的求解结果fq2=[',num2str(fq2),']'])<br>plot(gamma./k,fq2,'o',gamma./k,fq2,'r')<br>hold on<br>plot(gamma./k,fgauss,'o',gamma./k,fgauss,'r')<br>===========================================================================================<br>高斯三点积分公式的求解结果fgauss=[0.83219    0.040479   0.0019681 9.5738e-005 4.6554e-006 2.2647e-007 1.1011e-008 5.3538e-010 2.6036e-011]<br>数值积分quadl命令的求解结果fq2=[0.037352   0.0078398   0.0016273    0.000337 1.2269e-007 1.1647e-007 5.6629e-009 2.7534e-010  1.339e-011]<br>============================================================================================<br>上述为用gauss三点积分公式和quadl高精度积分所得的计算结果,可以看出:两者在同一数量级,我没有仔细检查公式我是否抄对,但是如果公式我没抄错,计算结果应该就是这个,至于你所提出的“积分有限”我个人认为是你自己对数值积分的理解有偏差,在数值积分中没有“无穷大”的概念,只有收敛趋势和逼近误差。在上述题目中我取积分上下限为[-1000,1000],计算结果和100、10000都在一个数量级上,应该是向某个数值收敛的(这个数值应该是0)。<br>btw:前面我所给的程序只是给个意思,不是确切的求解方法,否则应该对主要步骤加while的循环扩大积分的上下限保证计算精度。
[此贴子已经被作者于2006-6-17 12:31:02编辑过]

 楼主| 发表于 2006-6-17 16:28 | 显示全部楼层

谢谢 bainhome

这里先谢谢 <STRONG><FONT face=Verdana color=#61b713>bainhome。虽然离最终值还有一段距离<br>  我<FONT color=#000000>引出这个问题不是说怎么计算,主要是如何验证与公式对应的图。<br>  在仿真中,可能由于精度不够,迟迟得不到图中曲线。但如果只是简单的用定步长来求,它的运算量就有点大。<br>  我想也许一些人也遇到与我类似问题吧。在这里,再次谢谢<FONT color=#61b713>bainhome </FONT></FONT><FONT color=#000000>并希望高手们不吝赐教,给出圆满答案,谢谢<br></FONT></FONT></STRONG>
[此贴子已经被作者于2006-6-18 9:10:48编辑过]

发表于 2006-6-19 08:08 | 显示全部楼层

回复:(xianuser)挑战matlab积分极限

<P><FONT color=#ff0000>bainhome加威望3点,xianuser加威望2点,suffer加威望1点</FONT></P>
<P>多情清秋<BR>2006年6月19日</P>
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-25 02:02 , Processed in 0.064241 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表