因为版本问题,首先你要用你说的那些函数,最好看一下这些函数在2012a版本中是否存在,因为在对matlab进行版本更新时,mathworks官方会增加或者删除一些函数,因此你要用的函数在低版本中不一定存在,可以下载高版本的试试。
其次像你说的rayleighchan函数,我在2018a版本中查了一下(就是在command window中写help XXX函数)发现rayleighchan快要被移除了,并且要被commRayleighChannel函数代替,当然代替值发生在未来推出的版本。
因此推荐题主下载一个2017版本左右的matlab,应该会有你想要的函数。
最后注意一下,你说的其他函数有可能是个人开发写的代码,不是官方推出的,这时候就需要自己把对应的function函数加载到路径中
tt=(0:1/fs:ts);
t=[tt;tt+ts;tt+2ts;tt+3ts;tt+4ts;tt+5ts;tt+6ts;tt+7ts;tt+8ts;tt+9ts;];
y=zeros(10,length(tt));
i=1;
%开始调制
while i<=10
y(i,:)=x(i)cos(2pif1t(i,:))+~x(i)cos(2pif0t(i,:));
i=i+1;
end
t=reshape(t',length(tt)10,1);%阵列重新排列
y=reshape(y',length(tt)10,1);
figure(2);
plot(t,y);
title('FSK信号时域波形');xlabel('时间');ylabel('幅度');
clear;
close all;
Fd=1;%消息序列的采样速率
Fs=3Fd;%以调信号的采样速率
M=4;%4比特调制,qpsk
SNR=0:12;%去信噪比从0到12
SNR1=0:01:12;%步进为01
for n=1:length(SNR)%对每一snr计算一次
Eb_N0=10^(SNR(n)/10);%换算10进制
sgma=sqrt(1/(4Eb_N0));%噪声信号的平方差开根号
x=randint(10000,1,M);%产生10000个输入符号
y=dmodce(x,Fd,Fs,'psk',M);%调制
ynoise=y+sqrt(Fs/Fd)sgma(randn(length(y),1)+1irandn(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('仿真误码率曲线','理论误码率曲线');
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)