[問題] 有關迴圈紀錄的問題。已回收
大家好,小弟這次採用土法煉鋼的方式,嘗試自己寫程式看看,但還是遇到了
一些問題,想請問各位大大該怎麼解決。以下是程式碼和問題詳述。
clear all;
close all;
EsNo = 1:1:10; %%%% SNR的範圍
Es = 1; %%%% 設定Es=1
No = 10.^(-EsNo/10); %%%% 逆推得到的雜訊Power
for i=1:length(EsNo)
N(i+1)=0;
correct1(i+1)=0;
correct2(i+1)=0;
correct3(i+1)=0;
correct4(i+1)=0;
%%%%%%%%%%%%%%%%%% 以下的迴圈應該是問題的主因%%%%%%%%%%%%%%%%%%%
for j=1:100000
s = sqrt(Es/2);
n1 = sqrt(No/2)*(randn(1) + j*randn(1));
n2 = sqrt(No/2)*(randn(1) + j*randn(1));
A(j) = s;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 如何紀錄s1 s2 %%%%%%%%%%%%%%%%%%%%%
s1 = s + n1;
s2 = s + n2;
%%%%%%%%%%%%%%%%%%%%%%% 這邊也有問題%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if (s1>0 & s2>0);
correct1(i+1)=correct1(i+1)+1; %若在第一象限則判斷他對
elseif (s1<0 & s2>0)
correct2(i+1)=correct2(i+1)+1; %若在第二象限則判斷他對
elseif (s1<0 & s2<0)
correct3(i+1)=correct3(i+1)+1; %若在第三象限則判斷他對
elseif (s1>0 & s2<0)
correct4(i+1)=correct4(i+1)+1; %若在第四象限則判斷他對
else
N(i+1)=N(i+1)+1; %若判斷錯誤則錯誤+1
end
%%%%%%%%%%%%%%%%%%%%% 分隔線 %%%%%%%%%%%
end
pe(i+1)=N(i+1)/j; %計算錯誤率
end
semilogy(i,pe,'*'); %畫模擬值
hold
SNRindB2=0:0.1:10;
for i=1:length(SNRindB2),
SNR2=exp(SNRindB2(i)*log(10)/10);
% theoretical error rate
theo_err_prb(i)=qfunct(sqrt(2*SNR2)); %理論值
% echo off ;
end;
display(pe)
display(N)
display(s1)
display(s2)
semilogy(SNRindB2,theo_err_prb);
以上是我的程式碼,分隔線,是我自己認為這些地方是問題所在,特別標示出來的。
而我要問的問題是:
Q1:請問我寫的第二個迴圈,也就是j=1:100000的那個,請問s1和s2要怎麼把它記錄起來,
好讓他不要被後來的s1和s2取代掉?
我遇到的問題就是,檢查if和else的時候,發現s1和s2的值,在第一到第四象限的值,
都是一樣的導致圖型根本跑不出來,請大大教教我,該怎麼寫,才能把值記錄下來,
要不然,我現在寫的程式,跑出來,幾乎都是一個點...。很糟糕= =。
Q2:我知道錯誤機率產生的方式,是輸入一個值,知道這個值原本在第幾象限,再丟入
程式做判斷,如果判斷和原本的象限相同,那正確+1,若跑到其他象限,代表判斷
錯誤,錯誤值+1。
請問我寫的if else的程式碼,可以正確的判斷錯誤機率嗎?
例如:第一個(s1,s2)=(+,+),程式判斷是第一象限,正確+1。
第二個(s1,s2)=(-,+),程式判斷是第一象限,錯誤+1。
.
.
.
.
重複10萬次,每次得到的s1和s2的正負值都是隨機的,再丟入程式判斷是否正確
但是我覺得,我的寫法應該會把s1和s2全部都判斷成正確的,但不知道該怎麼改,
請各位好心的大大幫我解答。
p.s. correct會有1234,是因為我怕會被替換掉,所以另外起了4個,但是也不知道
對不對...。還請大大幫我看看
而最後,理論值的部分,我暫時是用版上的程式碼跑看看,我偷懶了= =
謝謝各位好心的大大幫忙。小弟我感激不盡。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.23.17.113
※ 編輯: dv8508 來自: 163.23.17.113 (10/09 13:48)
※ 編輯: dv8508 來自: 163.23.17.113 (10/09 17:04)
→
10/10 17:40, , 1F
10/10 17:40, 1F
→
10/10 20:07, , 2F
10/10 20:07, 2F
→
10/11 11:22, , 3F
10/11 11:22, 3F
→
10/11 15:37, , 4F
10/11 15:37, 4F
→
10/11 15:38, , 5F
10/11 15:38, 5F
→
10/11 15:38, , 6F
10/11 15:38, 6F
→
10/11 16:51, , 7F
10/11 16:51, 7F
→
10/11 17:04, , 8F
10/11 17:04, 8F
→
10/11 17:04, , 9F
10/11 17:04, 9F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章