作者a055076 (Dilemma)
看板MATLAB
标题[问题]跑for回圈卡住不动
时间Thu Jan 10 19:53:30 2013
老师出了一个作业要做通讯错误率计算
当在bipolar signaling情况下 做输入1百万次的错误率分析
我的程式如下
clear all;
N0=1;
a=N0^0.5;
for i=1:100000
y(i)=rand(1)*2-1; %这里主要功用是我要产生随机1or-1的输入值
if y(i)>0 %因为rand产生的是0~1之间的数值 不包括0 1
x(i)=1; %所以才用这种看起来很笨的方法
else %
x(i)=-1; %
end %
z(i)=a*randn+x(i);
if z(i)>0
d(i)=1;
else
d(i)=-1;
end
e(i)=x(i)-d(i);
end
count = sum(e ~=0);
BER=count/100000;
现在问题在於 当我for回圈给他1000 10000都在1秒内跑完
可是增加到10万时 电脑就大概要跑1分钟
跑100万次的我等了两小时都没有出来
请问这是什麽问题...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.118.121.82
1F:推 s123123sam:请先建立e, d, x, y, z 参数所需矩阵的大小 01/10 20:23
2F:→ s123123sam:范例:x的大小要20个,x=zeros(20,1)。 01/10 20:26
3F:推 s123123sam:试着减少回圈次数或不用回圈,一样可达成目的 01/10 20:28
了解! 那我想请问一下 有什麽办法(例如图形介面功能之类的)可以达到不用回圈
而可以模拟1百万次的
今天在回家路上想了一下 矩阵内1百万个数值好像太大了 加上for回圈跑一百万次
只要中间一个出错可能就卡住当掉
如果我要用一次做一个输入对应一个输出来计算 然後run 1百万次 有什麽方式呢?
因为1百万次是老师规定的 次数只能多不能少...
matlab我还是个新手 所以还有很多不懂的地方 感谢解答!!
※ 编辑: a055076 来自: 203.73.69.227 (01/10 22:19)
4F:→ MOONY135:你的a=NO^0.5好像有点怪 因为不就等於1吗 01/10 23:26
※ 编辑: a055076 来自: 203.73.69.227 (01/10 23:30)
5F:→ a055076:那个地方因为我的N0还有其他的数值要代入~ 01/10 23:33
6F:→ a055076:N0的值要分别代入1 10^0.3 10^0.5然後个别跑一百万次 01/10 23:35