FSK调制解调MATLAB源代码.docx
《FSK调制解调MATLAB源代码.docx》由会员分享,可在线阅读,更多相关《FSK调制解调MATLAB源代码.docx(33页珍藏版)》请在冰豆网上搜索。
FSK调制解调MATLAB源代码
FSK调制解调MATLAB源代码
关键词:
FSK高斯白噪声调制眼图信噪比
functionFSK
Fc=10; %载频
Fs=40; %系统采样频率
Fd=1; %码速率
N=Fs/Fd;
df=10;
numSymb=25;%进行仿真的信息代码个数
M=2; %进制数
SNRpBit=60;%信噪比
SNR=SNRpBit/log2(M);
seed=[1234554321];
numPlot=25;
%产生25个二进制随机码
x=randsrc(numSymb,1,[0:
M-1]);%产生25个二进制随机码
figure
(1)
stem([0:
numPlot-1],x(1:
numPlot),'bx');
title('二进制随机序列')
xlabel('Time');
ylabel('Amplitude');
%调制
y=dmod(x,Fc,Fd,Fs,'fsk',M,df);
numModPlot=numPlot*Fs;
t=[0:
numModPlot-1]./Fs;
figure
(2)
plot(t,y(1:
length(t)),'b-');
axis([min(t)max(t)-1.51.5]);
title('调制后的信号')
xlabel('Time');
ylabel('Amplitude');
%在已调信号中加入高斯白噪声
randn('state',seed
(2));
y=awgn(y,SNR-10*log10(0.5)-10*log10(N),'measured',[],'dB');%在已调信号中加入高斯白噪声
figure(3)
plot(t,y(1:
length(t)),'b-');%画出经过信道的实际信号
axis([min(t)max(t)-1.51.5]);
title('加入高斯白噪声后的已调信号')
xlabel('Time');
ylabel('Amplitude');
%相干解调
figure(4)
z1=ddemod(y,Fc,Fd,Fs,'fsk/eye',M,df);
title('相干解调后的信号的眼图')
%带输出波形的相干M元频移键控解调
figure(5)
stem([0:
numPlot-1],x(1:
numPlot),'bx');
holdon;
stem([0:
numPlot-1],z1(1:
numPlot),'ro');
holdoff;
axis([0numPlot-0.51.5]);
title('相干解调后的信号原序列比较')
legend('原输入二进制随机序列','相干解调后的信号')
xlabel('Time');
ylabel('Amplitude');
%非相干解调
figure(6)
z2=ddemod(y,Fc,Fd,Fs,'fsk/eye/noncoh',M,df);
title('非相干解调后的信号的眼图')
%带输出波形的非相干M元频移键控解调
figure(7)
stem([0:
numPlot-1],x(1:
numPlot),'bx');
holdon;
stem([0:
numPlot-1],z2(1:
numPlot),'ro');
holdoff;
axis([0numPlot-0.51.5]);
title('非相干解调后的信号')
legend('原输入二进制随机序列','非相干解调后的信号')
xlabel('Time');
ylabel('Amplitude');
%误码率统计
[errorSymratioSym]=symerr(x,z1);
figure(8)
simbasebandex([0:
1:
5]);
title('相干解调后误码率统计')
[errorSymratioSym]=symerr(x,z2);
figure(9)
simbasebandex([0:
1:
5]);
title('非相干解调后误码率统计')
%滤除高斯白噪声
Delay=3;R=0.5ropD=0; %滞后3s
[yf,tf]=rcosine(Fd,Fs,'fir',R,Delay); %升余弦函数
[yo2,to2]=rcosflt(y,Fd,Fs,'filter',yf);
%加入高斯白噪声后的已调信号和经过升余弦滤波器后的已调信号
t=[0:
numModPlot-1]./Fs;
figure(10)
plot(t,y(1:
length(t)),'r-');
holdon;
plot(to2,yo2,'b-');
holdoff;
axis([030-1.51.5]);
xlabel('Time');
ylabel('Amplitude');
legend('加入高斯白噪声后的已调信号','经过升余弦滤波器后的已调信号')
title('升余弦滤波前后波形比较')
eyediagram(yo2,N);%眼图
title('加入高斯白噪声后的已调信号的眼图')
ASK数字通信系统matlab仿真及误码率分析
别人叫我帮忙的但是我不是通信专业大家帮帮忙
1、假设某数字通信系统收发信息速率为1kbps,发送端对数字信息进行ASK调制后,使用模拟线路进行传输,其中,载波频率为4kHz,数字“1”对应有载波,数字“0”对应无载波,接收端接收到信号后使用载波信号为模板进行相关解调。
考虑信道中存在不同的加性高斯白噪声的情况下,分析此时该系统的误码性能。
设计内容3的操作步骤:
1、
根据假设,系统信息速率为1kbps,考察1s内系统的误码性能,即需要随机生成1000个“0”,“1”数据,每一位信息所占时间片大小为1ms。
(round(rand(1,1000)))
2、
由于系统载波频率为4kHz,生成载波信号Ca=sin(2*pi*4000*t),进行AM调制,若信息为“1”,载波幅度为1,若信息为“0”,载波幅度为0。
例如,若第n位数据为“1”,则在第n位数据对应的时间片((n-1)ms<=t<=nms)内为正弦载波信号,若每一个时间片内取100个采样点,则对应信号为sin(2*pi*4000*t),t=n-1+1/100:
1/100:
n;反之,为0。
例如下图为10个离散数据:
0,0,0,0,1,0,1,0,0,0,经过调制后的波形。
(见附件)
3、
信号调制后送入信道,假设该信道存在较大的加性高斯白噪声,使用awgn函数生成在接收端接收到的叠加了噪声的信号。
(Rx_m=awgn(Tx_m,-5,0),其中Tx_m为调制后的信号,Rx_m为在接收端接收的信号,-5表示信噪比为-5dB,0表示信号功率为0dBw)
4、
在接收端用载波信号为模板进行相关解调。
(即将1个时间片(1ms)内的接收信号(100个)与载波信号逐点相乘后累加,与阈值(载波信号逐点相乘后累加值的一半)相比,若大于阈值,则判定接收的信号为“1”,反之为“0”,阈值大小设为载波与载波相关值的一半)
5、
将接收到的数据与发送数据进行比较,找出,并计算发生错误的位的个数,计算此时的误码率。
6、
修改awgn函数中的信噪比,重复以上操作,分析误码率变换的规律,并说明原因。
附二:
可能用到的函数,可用“help命令”的格式查看帮助
roundrandawgnsumbitxor
%Matlabversion:
7.0.4.365(R14)ServicePack2
%Date:
2009/01/15
%Rs=1000;%rateis1kbps
%fc=4000;%carrieris4kHz
%'1'employscarrier
%'0'nocarrier
%t0=1;%timedurationis1second
N=1000;%Samplenumber,equaltorate
fc=4000;%Carrierfrequency
fs=100;% Smaplingrateperbit
ts=1/fs;%Samplinginterval
t0=1;%Timeduration
tc=t0/N;%Eachbitlasts1millisecond
t=[0:
tc:
t0-tc];%Timeaxisofmessagesignal
ct=[0:
ts/N:
tc-ts/N];%Timeaxisofonebitduration
ca=sin(2*pi*fc*ct);%Carriersignal
test=ca.^2;
limitation=sum(test);
snr=-5;%SNRindB
bercnt=0;%biterrorcounter
%Messagesignal
xn=round(rand(1,1000));%1000randombits
%Modulation,mod_sigisthemodulatedsignalwithoutnoise
form1=1:
N
if(xn(m1)==1)
mod_sig((m1-1)*fs+1m1*fs))=ca;
else
mod_sig((m1-1)*fs+1m1*fs))=zeros(1,fs);
end
end
%ThroughAWGNChannel
rn=awgn(mod_sig,snr,0);%Receivedsignal
%Correlationdemodulation
rxn=zeros(1,N);%Estimatedvalueofrn
form2=1:
N%Processingbitbybit
rn_seg=rn((m2-1)*fs+1m2*fs));
sumrxn(m2)=rn_seg*ca';%Correlationandsummation
if(sumrxn(m2)>=(limitation/2))%Determinationcriteria,25isthelimitedvalue
rxn(m2)=1;
else
rxn(m2)=0;
end
if(rxn(m2)~=xn(m2))
bercnt=bercnt+1;
end
% if
end
ber=bercnt/N;
disp('信噪比为:
');snr
disp('误码率为:
');ber
%sum(rxn-xn)
subplot(311)
stem(xn,'rx'),title('原始信号'),xlabel('t/0.001s'),axis([121-.251.25])
subplot(313)
stem(rxn,'kx'),title('解调信号'),xlabel('t/0.001s'),axis([121-.251.25])
subplot(312),
plot(mod_sig),title('已调信号'),axis([02000-1.51.5])
PSK信号载波相位符号定时联合估计程序
载波环采用判决反馈环,