[問題]跑for迴圈卡住不動

看板MATLAB作者 (Dilemma)時間13年前 (2013/01/10 19:53), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串1/3 (看更多)
老師出了一個作業要做通訊錯誤率計算 當在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

01/10 20:23, , 1F
請先建立e, d, x, y, z 參數所需矩陣的大小
01/10 20:23, 1F

01/10 20:26, , 2F
範例:x的大小要20個,x=zeros(20,1)。
01/10 20:26, 2F

01/10 20:28, , 3F
試著減少迴圈次數或不用迴圈,一樣可達成目的
01/10 20:28, 3F
了解! 那我想請問一下 有什麼辦法(例如圖形介面功能之類的)可以達到不用迴圈 而可以模擬1百萬次的 今天在回家路上想了一下 矩陣內1百萬個數值好像太大了 加上for迴圈跑一百萬次 只要中間一個出錯可能就卡住當掉 如果我要用一次做一個輸入對應一個輸出來計算 然後run 1百萬次 有什麼方式呢? 因為1百萬次是老師規定的 次數只能多不能少... matlab我還是個新手 所以還有很多不懂的地方 感謝解答!! ※ 編輯: a055076 來自: 203.73.69.227 (01/10 22:19)

01/10 23:26, , 4F
你的a=NO^0.5好像有點怪 因為不就等於1嗎
01/10 23:26, 4F
※ 編輯: a055076 來自: 203.73.69.227 (01/10 23:30)

01/10 23:33, , 5F
那個地方因為我的N0還有其他的數值要代入~
01/10 23:33, 5F

01/10 23:35, , 6F
N0的值要分別代入1 10^0.3 10^0.5然後個別跑一百萬次
01/10 23:35, 6F
文章代碼(AID): #1GxgkzIy (MATLAB)
文章代碼(AID): #1GxgkzIy (MATLAB)