msk的调制解调MATLAB源代码.docx

上传人:b****6 文档编号:7378429 上传时间:2023-01-23 格式:DOCX 页数:17 大小:18.16KB
下载 相关 举报
msk的调制解调MATLAB源代码.docx_第1页
第1页 / 共17页
msk的调制解调MATLAB源代码.docx_第2页
第2页 / 共17页
msk的调制解调MATLAB源代码.docx_第3页
第3页 / 共17页
msk的调制解调MATLAB源代码.docx_第4页
第4页 / 共17页
msk的调制解调MATLAB源代码.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

msk的调制解调MATLAB源代码.docx

《msk的调制解调MATLAB源代码.docx》由会员分享,可在线阅读,更多相关《msk的调制解调MATLAB源代码.docx(17页珍藏版)》请在冰豆网上搜索。

msk的调制解调MATLAB源代码.docx

msk的调制解调MATLAB源代码

msk的调制解调MATLA源代码

functionout=delay(data,n,sample_number)

%data:

延迟的数据

%n:

延迟码元个数

%sample_number码元采样个数

out=zeros(1,length(data));

out(n*sample_numbe叶1:

length(data))=

data(1:

length(data)-n*sample_number);

function[data_diff]=difference(data)

%差分编码

%**********************************************************

****************

%data输入信号

%data_diff差分编码后信号

%**********************************************************

****************

data_diff=zeros(1,length(data));

data_diff

(1)=1*data

(1);%1为差分编码的初始参考值

fori=2:

length(data)

data_diff(i)=data_diff(i-1)*data(i);

end

%**********************************************************

****************

function[signal_out,l_out,Q_out]=mod_msk(data,data_len,sample_number,Rb)

%MS基带调制

%**********************************************************

****************

%data调制信号

%data_len码元个数

%sample_number每个码元采样点数

%Rb

码元速率

%signal_out

基带调制输出

%I_out

I路输出

%Q_out

Q路输出

%**********************************************************

****************

%data_len二10;%码元个数

%sample_number=8;%采样点数

%Rb=16000;%码元速率

%datal=randint(1,data_len);

%data=2*data1-1;%传输的序列

Tb=1/Rb;%码元时间

fs=Rb*sample_number;%采样速率

%

%差分编码

[data_diff]=difference(data);

%**********************************************************

****************

%并串转换,延时

1

(1)=1;%faiO=0,cos(fai0)=1

fori=1:

2:

data_len

Q(i)=data_diff(i);

Q(i+1)=data_diff(i);

end

fori=2:

2:

data_len

I(i+1)=data_diff(i);

I(i)=data_diff(i);

end

fori=1:

sample_number

I1(i:

sample_number:

data_len*sample_number)=

I(1:

data」en);

Q1(i:

sample_number:

data_len*sample_number)=

Q(1:

data_len);

end

%**********************************************************

****************

%乘加权函数

t=1/fs:

1/fs:

data_len*Tb;

l_out=I1.*cos(pi*t/2/Tb);

Q_out=Q1.*sin(pi*t/2/Tb);

%**********************************************************

****************

%

%调制信号产生

signal_out=I_out+j*Q_out;

%**********************************************************

****************

%%

%%|图

%subplot(221)

时间

%plot(data,'.-');title('MSK传输的数据');xlabel('

*3nH«

)y_abe_(®w・)

%subp_of(222)

%p-oadafaldiff:

-—.辽m®可3選箔・)x_abe-(兰凹

)y_abe_(®w・)

%subp_of(223)

%p_2-(-1・<)s_e(MOtf-^・)x_abe_(兰凹)y_abe三

®w)

%subp_of(224)

%p_of(Q1:

-—・)s_e(MOtfQ^)x_abe_(兰凹)y_abe三

®w)

%

%figu「e

(2)

%subpof(22」)

%p_2.(cos(pi*t/2Hb)「<辽f_e(8®^cos(mt/(2Tb)y)><一abe三鱼凹)y_abe_(®w・)

%subp_of(222)

%p_2.(sin(piG2Hb)・<)s_e(8®^

sin(mt/(2Tb)y)><一abe三鱼凹)y_abe_(s・)

%subp_of(223)

%p_of(_louu<辽f_e(岂商可-^・)x_abe-(昇「凹

)y_abe_(®w)

%subp_of(224)

6sfsyB

 

时间

%plot(Q_out,'.-');title('加权后Q路');xlabel('

');ylabel('幅度');

%%********************************************************

******************

function[signal_out,l_out,Q_out,phase]=mod_msk2(data,data_len,sample_number,Rb)

%MS基带调制

%**********************************************************

****************

%data调制信号

%data_len码元个数

%sample_number每个码元采样点数

%Rb码元速率

%signal_out基带调制输出

%I_outI路输出

%Q_outQ路输出

%**********************************************************

****************

%data_len二10;%码元个数

%sample_number=8;%采样点数

%Rb=16000;%码元速率

%datal=randint(1,data_len);

%data=2*data1-1;%传输的序列

Tb=1/Rb;%码元时间

fs=Rb*sample_number;%采样速率

%

%采样

fori=1:

sample_number

data_sample(i:

sample_number:

data_len*sample_number)=data;

end

%**********************************************************

****************

%

%十算相位

phase=zeros(1,data_len*sample_number);

phase

(1)=data_sample

(1)*pi/2/sample_number;

fori=2:

data_len*sample_number

phase(i)=phase(i-1)+data_sample(i-1)*

pi/2/sample_number;

end

%**********************************************************

****************

%

%I/Q

I_out=cos(phase);

Q_out=sin(phase);

%**********************************************************

****************

%

%调制信号产生signal_out=l_out+j*Q_out;

%**********************************************************

****************

%MS调制,差分解调方法一

clearall

closeall

%

%参数设置

data_len二10000;%码元个数

sample_number=8;%采样个数

Rb=24000;%码元速率

fc=96000;%载波频率

%**********************************************************

****************

%

%随机产生传输信号

data二rand_binary(data_len);

%**********************************************************

****************

%

%MS基带调制

[signal_out,l_out,Q_out]=

mod_msk(data,data_len,sample_number,Rb);

%**********************************************************

****************

%

帅频搬移

multi=fc/Rb;

I_temp=interp(I_out,multi);

Q_temp=interp(Q_out,multi);

Fs=fc*sample_number;

t=1/Fs:

1/Fs:

length(l_temp)*1/Fs;

signal」=l_temp.*cos(2*pi*fc*t);

signal_q二Q_temp.*sin(2*pi*fc*t);

signal_mod=l_temp.*cos(2*pi*fc*t)-Q_temp.*sin(2*pi*fc*t);

%**********************************************************

****************

%

%加噪声

forSNR=0:

8

signal_mod1=awgn(signal_mod,SNR);

%

%去载波

N=300;%滤波器的阶数为(N+1)

F二[0,fc-1000,fc+1000,Fs/2]*2/Fs;

A=[1,1,0,0];

lpf=firls(N,F,A);

[amp_lpf,w]=freqz(lpf);

l_dem二signal_mod1.*cos(2*pi*fc*t)*2;

I_dem=conv(l_dem,lpf);

l_dem=l_dem(N/2+1:

N/2+length(l_temp));

Q_dem=signal_mod1.*sin(2*pi*fc*t)*2;

Q_dem=conv(Q_dem,lpf);

Q_dem=-Q_dem(N/2+1:

N/2+length(l_temp));

%抽取

l_dem_out=zeros(1,length(l_dem)/multi);

Q_dem_out=zeros(1,length(Q_dem)/multi);

fori=1:

length(l_dem_out)

l_dem_out(i)=l_dem(multi*(i-1)+1);

Q_dem_out(i)=Q_dem(multi*(i-1)+1);

end;

%*******************************************************

*******************

%

%差分解调

demod_data=zeros(1,data_len);

demod_data

(1)=Q_dem_out(sample_number);

fori=2:

data_len

demod_data(i)=

Q_dem_out(i*sample_number)*l_dem_out((i-1)*sample_number)-l_dem_out(i*sample_number)*Q_dem_out((i-1)*sample_number);

end

%*******************************************************

*******************

%

%判决

demod_data=demod_data>0;

demod_data=2*demod_data-1;

%*******************************************************

*******************

%

%计算误码率

[num,ber(SNR+1)]=symerr(demod_data,data);

%*******************************************************

*******************

end

%**********************************************************

****************

%

頰码率曲线

semilogy([0:

8],ber,'r*-');

%**********************************************************

****************

%

頰码率理论值

snr=0:

0.1:

8;

fori=1:

length(snr)

snr1(1,i)=10A(snr(1,i)/10);

ps(1,i)=1/2*erfc(sqrt(snr1(1,i)));

pe(1,i)=2*ps(1,i);

end

holdon

semilogy([0:

.1:

8],pe);

%**********************************************************

****************

%MS调制,差分解调方法二

clearall

closeall

%

%参数设置

data_len二10000;

%码元个数

sample_number=8;

%采样个数

Rb=24000;

%码元速率

fc=96000;

%载波频率

%**********************************************************

****************

%

%随机产生传输信号

data二rand_binary(data_len);

%**********************************************************

****************

%

%MS基带调制

[signal_out,l_out,Q_out]=

mod_msk(data,data_len,sample_number,Rb);

%**********************************************************

****************

%

帅频搬移

multi=fc/Rb;

I_temp=interp(I_out,multi);

Q_temp=interp(Q_out,multi);

Fs二fc*sample_number;

t=1/Fs:

1/Fs:

length(l_temp)*1/Fs;

signal」=l_temp.*cos(2*pi*fc*t);

signal_q二Q_temp.*sin(2*pi*fc*t);

signal_mod=l_temp.*cos(2*pi*fc*t)-Q_temp.*sin(2*pi*fc*t);

%**********************************************************

****************

%

%加噪声

forSNR=0:

8

signal_mod1=awgn(signal_mod,SNR);

%

%去载波

N=300;%滤波器的阶数为(N+1)

F二[0,fc-1000,fc+1000,Fs/2]*2/Fs;

A=[1,1,0,0];

lpf=firls(N,F,A);

[amp_lpf,w]=freqz(lpf);

l_dem二signal_mod1.*cos(2*pi*fc*t)*2;

I_dem=conv(l_dem,lpf);

l_dem=l_dem(N/2+1:

N/2+length(l_temp));

Q_dem=signal_mod1.*sin(2*pi*fc*t)*2;

Q_dem=conv(Q_dem,lpf);

Q_dem=-Q_dem(N/2+1:

N/2+length(l_temp));

l_dem_out=zeros(1,length(l_dem)/multi);%抽取

Q_dem_out=zeros(1,length(Q_dem)/multi);

fori=1:

length(l_dem_out)

l_dem_out(i)=l_dem(multi*(i-1)+1);

Q_dem_out(i)=Q_dem(multi*(i-1)+1);

end;

%*******************************************************

*******************

%

%差分解调

demod_data=zeros(1,data_len);

demod_data

(1)=Q_dem_out(sample_number);

fori=2:

2:

data_len

demod_data(i)=

-l_dem_out(i*sample_number)*Q_dem_out((i-1)*sample_number);end

fori=3:

2:

data_len

demod_data(i)=

Q_dem_out(i*sample_number)*l_dem_out((i-1)*sample_number);end

%*******************************************************

*******************

%

%判决

demod_data=demod_data>0;

demod_data=2*demod_data-1;

%*******************************************************

*******************

%

%计算误码率

[num,ber(SNR+1)]=symerr(demod_data,data);

%*******************************************************

*******************

end

%**********************************************************

****************

%

頰码率曲线

semilogy([0:

8],ber,'r*');

%**********************************************************

****************

%

頰码率理论值

snr=0:

0.1:

8;

fori=1:

length(snr)

snr1(1,i)=10A(snr(1,i)/10);

ps(1,i)=1/2*erfc(sqrt(snr1(1,i)));

pe(1,i)=2*ps(1,i);

end

holdonsemilogy([0:

.1:

8],pe);

0/严*******************************************************

****************

°%MS^制,解调

clearall

closeall

%

%参数设置

data_len=30000;%码元个数

sample_number=8;%采样个数

Rb=24000;%码元速率

fc=96000;%载波频率

%**********************************************************

****************

%

%随机产生传输信号

data=rand_binary(data_len);

%**********************************************************

****************

%

%MS基带调制

[signal_out,l_out,Q_out]=

mod_msk(data,data_len,sample_number,Rb);

%**********************************************************

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1