你好,请问我的matlab为2012a版本,不能使用rayleighchan和很多psk,qpsk这样的函数为什么?

你好,请问我的matlab为2012a版本,不能使用rayleighchan和很多psk,qpsk这样的函数为什么?,第1张

因为版本问题,首先你要用你说的那些函数,最好看一下这些函数在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('仿真误码率曲线','理论误码率曲线');

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/12163941.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存