The following code will work fine for rayleigh fading channel.....
clc;
clf;
clear all;
for snr=1:50
snrnum=10^(snr/10);
psk_fading(snr)=0.5*(1-sqrt(snrnum/(1+snrnum)));
end
snr=1:50;
semilogy(snr,psk_fading);
grid on;
datanrzpolar=randsrc(1,1000);
for snr=1:50
signal_amp=sqrt(10^(snr/10))*datanrzpolar;
for mcr=1:100
noise=randn(1,1000);
noise1=randn(1,1000);
cnoise=complex(noise,noise1);
cnoise=cnoise/(sqrt(var(cnoise)));
p_f=2*pi*randn(1,1000);
x1=randn(1,1000);
x2=randn(1,1000);
x1=x1/(sqrt(var(x1)));
x2=x2/(sqrt(var(x2)));
for i=1:1000
alpha(i)=sqrt(x1(i)^2+x2(i)^2);
end
chi=alpha.^2;
chi_mean=mean(chi);
alpha_normalised=alpha./sqrt(chi_mean);
for i=1:1000
h(i)=alpha_normalised(i)*complex(cos(p_f(i)),-sin(p_f(i)));
r(i)=h(i)*signal_amp(i)+cnoise(i);
end
for i=1:1000
mrc(i)=r(i)*conj(h(i));
end;
for i=1:1000
if(real(mrc(i))>=0)
decision(i)=1;
else
decision(i)=-1;
end
end
hamm=0;
for i=1:1000
if(decision(i)~=datanrzpolar(i))
hamm=hamm+1;
end;
end
pe(mcr)=hamm/1000;
end
pepsk(snr)=mean(pe);
end
snr=1:50;
hold on;
semilogy(snr,pepsk,'r*');
grid on;