📄 gen_am.m
字号:
function [x]=gen_am(fc,fs,fx,Ns,A,Q,SNR)
%产生am信号
%fc:carrier frequency
%fs:sampple frequency
%fx:bandwidth of message signal
%Ns:number of total samplles per segment
%A:carrier amplitude
%Q:modulation depth
%SNR:snr of signal received
luo=0.98;
% n=randn(Ns,1);
% xm=zeros(Ns,1);
% xm(1)=n(1);
% for i=2:Ns
% xm(i,:)=luo*xm(i-1)+n(i);
% end;
xm0=voicesig(Ns,luo,fs,fx);
xm=xm0.';
Wn=fx/(fs/2); %filt the message siganl
fir_coef=fir1(30,Wn);
xm=fftfilt(fir_coef,xm);
xm = xm - mean(xm); %adjust the mean of message signal
m=2*Q*A/( max(xm)-min(xm)-Q*(max(xm)+min(xm)) );
for i=1:Ns
s(i,1)=(A+m*xm(i)) * cos(2*pi*fc*i/fs); %%% am modulation
end;
Wn=[(fc-fx)/(fs/2),(fc+fx)/(fs/2)]; %bandlimitation on modulated signal
fir_coef = fir1(30, Wn);
s=fftfilt(fir_coef, s);
n=randn(Ns,1); % adding the bandlimited noise;
Wn2=[(fc-1.2*fx)/(fs/2),(fc+1.2*fx)/(fs/2)];
fir_coef2=fir1(30,Wn2);
n=fftfilt(fir_coef2,n);
%%% function: sig_Rx = AWGN_channel(sig_Tx, fc, bandwidth, SNR, noise_flag);
Sp=sum(s.*conj(s));
Np=sum(n.*conj(n));
Rsn=sqrt(Sp/Np)*10^(-SNR/20);
x=s+Rsn*n;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -