📄 fsk.m
字号:
%蒙特卡罗仿真(Rayleigh信道,硬判决,2FSK)
%
% Eb=2; %每比特的能量,能量越大,卷积译码的误码率越小
% k=1;
% G=[1 0 1;1 1 1];
% input=[1 0 1 0 1 1 1 0];
% dsource=cnv_encd(G,k,input);
% N=length(dsource);
% n=size(G,1); %得到码字长度
% Ec=k*Eb/n; %得到码元能量
% FSK调制
Tb=1;
f1=1000/Tb;
f2=f1+1/Tb;
%f2=1500/Tb;
phi=pi/4;
NN=500;
t=0:Tb/(NN-1):Tb;
u1=cos(2*pi*f1*t); %若发送0,则调制信号为u1
u2=cos(2*pi*f2*t); %若发送1,则调制信号为u2
%
% % sgma=1;
for i=1:NN
r(i)=cos(2*pi*f2*t(i)+phi);%接收信号 ,
end;
% 通过Rayleigh信道
%chan = rayleighchan(1/1000,0)
%for j=1:N
% if(dsource(j)==0)
% y= filter(chan,r); %衰落
% else
% y= filter(chan,r); %衰落
% end;
%计算相关输出
v1=sin(2*pi*f1*t);
v2=sin(2*pi*f2*t);
r1c(1)=r(1)*u1(1);
r1s(1)=r(1)*v1(1);
r2c(1)=r(1)*u2(1);
r2s(1)=r(1)*v2(1);
for k=2:NN
r1c(k)=r1c(k-1)+r(k)*u1(k);
r1s(k)=r1s(k-1)+r(k)*v1(k);
r2c(k)=r2c(k-1)+r(k)*u2(k);
r2s(k)=r2s(k-1)+r(k)*v2(k);
end;
%判决变量
r1=r1c(NN)^2+r1s(NN)^2;
r2=r2c(NN)^2+r2s(NN)^2;
if(r1>r2)
res=0;
else
res=1;
end;
%end;
%判决变量
% 通过Rayleigh信道
% chan = rayleighchan(1/1000,0);% Create Rayleigh fading channel object.
% fsksig=fskmod(dsource,2,8,8,32); %
% y= filter(chan,fsksig); % Effect of channel
% r=fskdemod(y,2,8,8,32); % FSK解调
%硬判决维特比译码
%[decoder_output,survivor_state,cumulated_metric]=viterbi(G,k,res);
% for j=1:NN
% v1=sin(2*pi*f1*t);
% v2=sin(2*pi*f2*t);
% r1c(1)=r(1)*u1(1);
% r1s(1)=r(1)*v1(1);
% r2c(1)=r(1)*u2(1);
% r2s(1)=r(1)*v2(1);
% for k=2:NN
% r1c(k)=r1c(k-1)+r(k)*u1(k);
% r1s(k)=r1c(k-1)+r(k)*v1(k);
% r2c(k)=r2c(k-1)+r(k)*u2(k);
% r2s(k)=r2c(k-1)+r(k)*v2(k);
% end;
% end;
% NN=1000;
% d=1;
% phi=0; %为了简单
% for i=1:NN
% if(dsource(j)==0)
% r1c(1)=sqrt(Eb)cos(phi);
% r1s(1)=y(1)*v1(1);
% r2c(1)=y(1)*u2(1);
% r2s(1)=y(1)*v2(1);
% else
% end;
% end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -