作者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