SNRindB1=0:2:10
SNRindB2=0:0.1:10
for i=1:length(SNRindB1)
[pb,ps]=cm_sm32(SNRindB1(i))
smld_bit_err_prb(i)=pb
smld_symbol_err_prb(i)=ps
end
for i=1:length(SNRindB2)
SNR=exp(SNRindB2(i)*log(10)/10)
theo_err_prb(i)=(1/2)*erfc(sqrt(2*SNR)/sqrt(2))
end
title('QPSK误码率分析灶斗')
semilogy(SNRindB1,smld_bit_err_prb,'*')
axis([0 10 10e-8 1])
hold on
% semilogy(SNRindB1,smld_symbol_err_prb,'仿皮o')
semilogy(SNRindB2,theo_err_prb)
legend('仿真比特误码率','理论比特误码率')
hold off
另一个.m文件
function [pb,ps]=cm_sm32(SNRindB)
N=10000
E=1
SNR=10^(SNRindB/10)
sgma=sqrt(E/SNR)/2
s00=[1 0]
s01=[0 1]
s11=[-1 0]
s10=[0 -1]
for i=1:N
temp=rand
if (temp<0.25)
dsource1(i)=0
dsource2(i)=0
elseif (temp<0.5)
dsource1(i)=0
dsource2(i)=1
elseif (temp<0.75)
dsource1(i)=1
dsource2(i)=0
else
dsource1(i)=1
dsource2(i)=1
end
end
numofsymbolerror=0
numofbiterror=0
for i=1:N
n=sgma*randn(size(s00))
if((dsource1(i)==0)&(dsource2(i)==0))
r=s00+n
elseif((dsource1(i)==0)&(dsource2(i)==1))
r=s01+n
elseif((dsource1(i)==1)&(dsource2(i)==0))
r=s10+n
else
r=s11+n
end
c00=dot(r,s00)
c01=dot(r,s01)
c10=dot(r,s10)
c11=dot(r,s11)
c_max=max([c00 c01 c10 c11])
if (c00==c_max)
decis1=0decis2=0
elseif(c01==c_max)
decis1=0decis2=1
elseif(c10==c_max)
decis1=1decis2=0
else
decis1=1decis2=1
end
symbolerror=0
if(decis1~=dsource1(i))
numofbiterror=numofbiterror+1
symbolerror=1
end
if(decis2~=dsource2(i))
numofbiterror=numofbiterror+1
symbolerror=1
end
if(symbolerror==1)
numofsymbolerror=numofsymbolerror+1
end
end
ps=numofsymbolerror/N
pb=numofbiterror/(2*N)
记得要保存为cm_sm32.m,然后运行前面那个.m文件就可以了。
clearclose all
Fd=1%消息序列的采样速率
Fs=3*Fd%以调信号的采样速率
M=4%4比特调制,qpsk
SNR=0:12%去信噪比从0到12
SNR1=0:0.1:12%步进为0.1
for n=1:length(SNR)%对每一snr计算一次
Eb_N0=10^(SNR(n)/10)%换算10进制
sgma=sqrt(1/(4*Eb_N0))%噪声信号的平方差开根号
x=randint(10000,1,M)%产生10000个输颂姿入符号
y=dmodce(x,Fd,Fs,'psk',M)%调制
ynoise=y+sqrt(Fs/Fd)*sgma*(randn(length(y),1)+1i*randn(length(y),1))%经过信道加噪燃樱绝声
z=ddemodce(ynoise,Fd,Fs,'psk',M)%解调
[numbers,pm(n)]=symerr(x,z)&求误符号率
end
for m=1:length(SNR1)%此循环用于画出理想的误符号率曲线
Eb_N0=10^(SNR1(m)/10)
pm1(m)=erfc(sqrt(log2(M)*Eb_N0)*sin(pi/M))
end
semilogy(SNR,pm,'-*',SNR1,pm1)%纵坐标取对数
xlabel('信噪比SNR/db')
ylabel('误码率(pe)')
legend('仿真误码率曲线','皮姿理论误码率曲线')
clcclear
B=[]
for ii=1:5
select=nchoosek(1:5,ii)
[m,n]=size(select)
r_num=repmat([1:m]',n,1)
c_num=select(:)
index=sub2ind([m 5],r_num(:),c_num)
A=ones(m,5)
A(index)=0
B=[BA]
end
%注意上面有一禅链种全部为1的面没有包括,如果包括这一种正好冲袭肆32种
%还有该程序和适合很散轿大数据的排列
%对于几十个没有什么问题
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)