⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modulate_demodulate.m

📁 TPC的Chase迭代译码时测试图样的程序
💻 M
字号:
function [R,noise_std]=modulate_demodulate(C,n1)
num=100;
a=1;              %滚降系数
fd=2.4*10^3;      % 基准采样率
fc=4*fd;          % 载波频率.
fs=4*fd;          % 信号的采样率   %q=fir1(32,fd*2.5/fsc); 
fsc=4*fc;         % 载波的采样率
T=1/fd;           % 信号的周期
nnn1=floor(fs/fd);% 信号的周期内采样点的数目
%--------------------- 映射-------------------------------------
for i=1:n1
    for j=1:n1
        x(i,j)=C(i,j)*2-1;
    end
end
%-----------------------脉冲成型-------------------------------
%----------------------均方根升弦成型序列---------------------- 
symbol_delay=8/2;             
rscosnum=2*symbol_delay*nnn1+1;            %3 定义滤波器长度。 
g=rcosine(fd,fs,'fir/sqrt',a,symbol_delay);%FIR类型的均方根升余弦滤波器.输入数字信号抽样频率fd,
                                           %滤波器的抽样频率是Fs,是fir/sqrt型的。
                                           %滚降系数是1,采样延时是4;
pog=sum(g.*g);             
g=g/sqrt(pog);                             %标准化
%----------------------------------------------------------------------
n=0;
for i=1:n1
    for j=1:n1
        n=n+1;
        xx(n)=x(i,j);
    end
end
x1=upsample(xx,fs/fd); %内插:将x扩展成4000,原因是成形滤波器的采样速率 200000 80000
                      %一般要求比输人符号速率要高(通常是其4~8倍)。因此,
                      %在此要有一个先于脉冲成形的过采样。此处设为4
y1=conv(x1,g);  %成形:将X1和G进行卷积,4000个点卷积33个点结果是4032个点  200032 80032
  %-----------------------------------载波调制---------------------------
yy=interp(y1,fsc/fs);    %为了匹配载波的采样率而进行插值 16128    800128    320128



y_len=length(yy);

t=[1/fsc:1/fsc:y_len/fsc];
y=yy.*cos(2*pi*fc*t);  %16128
signal_power=sum(y.*y/y_len*4);

%---------------------加入加性高斯白噪声------------------
snrcount_db=0:1:8;
%for l=1:9
   %if snrcount_db(l)<9
      
snr_lin=10^(snrcount_db(9)/10);             %线性SNR 
noise_power=signal_power/snr_lin;        % 噪声能量
noise_std=sqrt(noise_power);             % 计算噪声标准差
pnr=noise_std*randn(1,length(y));        % 产生随即噪声

for n=1:length(y)         
   x2r(n)=y(n)+pnr(n);
end

%-------------------------------------------------------

%-----------------------------------载波解调----------------------

for i=1:length(x2r)
  x3r(i)=x2r(i)*cos(2*pi*fc*i/fsc);  % 载波解调,16128 800128  320128
end
q=fir1(32,fd*2.5/fsc);                  %33   这两句为通过低通滤波器,其实也可以省略
x4r=conv(q,x3r);                      %16160  fc*2/fsc    800160   320160
signal_6=decimate(x4r,fsc/fs);          %对应于interp的插值 4040  200040  80040
%-------------------------------------------------------------------

% if l==1
%zz=eyediagram(signal_6,100);             %看眼图
% %     ww=scatterplot(signal_6,10);             %看散射图
% end

%-----------------------匹配滤波器--------------------------------
g1=g;
x5r=conv(signal_6,g1);            %4072             200072            80072
yyy=downsample(x5r,fs/fd);    %对应于将1000变成4000的upsample,1018 50018 20018
%----------------------------------------------------------------
yyy_len=length(yyy);
R=yyy(10:yyy_len-9);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -