大家帮忙找下错误!
此乃《MATLAB通信系统仿真及应用实例详解》(邓华编)P.122(BFSK在高斯白噪声信道中的传输性能)
脚本程序:
x=0:15;
y=x;
FrequencySeparation=24000;
BitRate=10000;
SimulationTime=10;
SamplesPerSymbol=2;
for i=1;length(x)
SNR=x(i);
sim('project5_1');
y(i)=mean(BitErrorRate);
end
hold off;
semilogy(x,y);
模块见附件,出不来结果,大家帮忙看看呢,谢谢啊。
[ 本帖最后由 cdwxg 于 2007-5-18 21:17 编辑 ] 怎么没人回应啊???帮帮忙啊
回复 #2 xwl2512999 的帖子
循环语句错误,应该用:,你用的是;回复 #3 spare 的帖子
谢谢!!!确实疏忽了,但图还是有点问题,显示为一条直线。不知道什么原因,把坐标参数改了还是不行。 原帖由 xwl2512999 于 2007-5-19 21:23 发表 http://www.chinavib.com/forum/images/common/back.gif谢谢!!!确实疏忽了,但图还是有点问题,显示为一条直线。不知道什么原因,把坐标参数改了还是不行。
那就确实是一条直线了。与坐标系数没关系。
可能是其他方面的问题。 是不是你的mean(BitErrorRate);其实计算的时候是你运行完后整个时刻BitErrorRate的均值
这样当然只是一个值,而你想达到的目的应该是16个?每次计算一次?但那样的话你是离散计算,需要设置时间分开吧?比如1秒计算一次? 有道理!!!
那怎么设置时间呢??? 这个就不知道了,而且我提的方向也不知道对不。
取时间不难,zero-order就可以,但难在你要取了后要算。
或者可以另外角度来考虑。
看下大家意见吧。
离散的好像还好些。。。
但是你这两句SimulationTime=10;
SamplesPerSymbol=2;没有实现该功能?SamplesPerSymbol=2表示什么?
[ 本帖最后由 cdwxg 于 2007-5-19 22:54 编辑 ] SamplesPerSymbol=2表示每个信号仅抽样两次。 不知道对不哈,你可以考虑下.
如果仿真时间是1000个采样点,每个采样时刻是ts
那么
for k=1:1:1000
time(k)=k*ts
那么如果你要取到第100个采样时刻的时候的方法是
if k==100
这里是你在100个采样时刻时候采取的行动,如加扰动,如mean
end
你这个可以设置20个或者10个采样时刻计算一次,你觉得呢? 自己试了一下,还是解决不了问题。正确的图应该是由16个离散的点描绘出的一条向下抛物线。不知道问题出在哪里。 【是不是你的mean(BitErrorRate);其实计算的时候是你运行完后整个时刻BitErrorRate的均值
这样当然只是一个值,而你想达到的目的应该是16个?每次计算一次?但那样的话你是离散计算,需要设置时间分开吧?】突破口应该就是这段话。 求救!!!
回复 #12 xwl2512999 的帖子
当中的一个模块设置错误,就是那个AWGN,里面的SNR是一个变量,但是你一直设置为15,那么程序中的SNR=x(i)就没有什么意义了,所以这个地方应该设置为变量SNR,出来的是一个抛物线,你看看对吗 对了!!!谢谢!!!果然问题就出在这!唉,郁闷几天了。
页:
[1]