📄 threeray.m
字号:
%File:c14_threeray.m
NN = 256;
tb = 0.5;
fs = 16;
ebn0db = [1:2:14];
x = random_binary(NN,fs)+i*random_binary(NN,fs);
p0 = input('Enter P0 > ');
p1 = input('Enter P1 > ');
p2 = input('Enter P2 > ');
delay = input('Enter tau > ');
delay0 = 0; delay1 = 0; delay2 = delay;
gain1 = sqrt(p1)*abs(randn(1,NN) + i*randn(1,NN));
gain2 = sqrt(p2)*abs(randn(1,NN) + i*randn(1,NN));
for k = 1:NN
for kk=1:fs
index=(k-1)*fs+kk;
ggain1(1,index)=gain1(1,k);
ggain2(1,index)=gain2(1,k);
end
end
y1 = x;
for k=1:delay2
y2(1,k) = y1(1,k)*sqrt(p0);
end
for k=(delay2+1):(NN*fs)
y2(1,k) = y1(1,k)*sqrt(p0) + ...
y1(1,k-delay1)*ggain1(1,k)+...
y1(1,k-delay2)*ggain2(1,k);
end
b = -ones(1,fs);b = b/fs;a = 1;
y = filter(b,a,y2);
[cor lags] = vxcorr(x,y);
cmax = max(max(abs(cor)));
nmax = find(abs(cor)==cmax);
timelag = lags(nmax);
corrmag = cmax;
theta = angle(cor(nmax))
y=y*exp(-i*theta);
hh = impz(b,a); ts = 1/16; nbw = (fs/2)*sum(hh.^2);
index = (10*fs+8:fs:(NN-10)*fs+8);
xx = x(index);
yy = y(index-timelag+1);
[n1 n2] = size(y2); ny2=n1*n2;
eb = tb*sum(sum(abs(y2).^2))/ny2;
eb = eb/2;
[peideal,pesystem] = psk_berest(xx,yy,ebn0db,eb,tb,nbw);
figure
semilogy(ebn0db,peideal,'b*-',ebn0db,pesystem,'r+-')
xlabel('E_b/N_0 (dB)');ylabel('Probability of Error');grid
axis([0 14 10^(-10) 1])
%end of script file.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -