一MSK的附加相位图程序.docx

上传人:b****7 文档编号:9145433 上传时间:2023-02-03 格式:DOCX 页数:13 大小:242.50KB
下载 相关 举报
一MSK的附加相位图程序.docx_第1页
第1页 / 共13页
一MSK的附加相位图程序.docx_第2页
第2页 / 共13页
一MSK的附加相位图程序.docx_第3页
第3页 / 共13页
一MSK的附加相位图程序.docx_第4页
第4页 / 共13页
一MSK的附加相位图程序.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

一MSK的附加相位图程序.docx

《一MSK的附加相位图程序.docx》由会员分享,可在线阅读,更多相关《一MSK的附加相位图程序.docx(13页珍藏版)》请在冰豆网上搜索。

一MSK的附加相位图程序.docx

一MSK的附加相位图程序

一、MSK的附加相位图程序

MATLAB程序如下:

data_len=7;%码元个数

sample_number=10;%采样个数

Rb=2400;%码元速率

fc=9600;%载波频率

data=[-1,1,1,1,-1,1,-1];

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

plot(phase)

title('MSK附加相位图')

grid

结果如图

二、MSK的功率谱

其matlab程序代码如下:

fb=2400;

Tb=1/fb;

fc=9600;

f1=4800;f2=6400;

fs=fc/fb;

f=-3*fb:

0.001*fb:

3*fb;

Mf=(1/16)*Tb*((cos(2*pi*(f-fs)*Tb).^2))./(pi.^2*(1-(4*(f-fs)*Tb).^2));

Ff=(1/16)*Tb*(abs((sin(pi*(f+f1/fb)*Tb))./(pi*(f+f1/fb)))).^2+...

(1/16)*Tb*(abs((sin(pi*(f-f1/fb)*Tb))./(pi*(f-f1/fb)))).^2+...

(1/16)*Tb*(abs((sin(pi*(f+f2/fb)*Tb))./(pi*(f+f2/fb)))).^2+...

(1/16)*Tb*(abs((sin(pi*(f-f2/fb)*Tb))./(pi*(f-f2/fb)))).^2+...

(1/16)*(imp(f,-f1)+imp(f,f1)+imp(f,-f2)+imp(f,f2))

plot(f,Mf,'b-');title('MSK的功率谱');ylabel('幅度');

holdon

plot(f,Ff*10.^5,'r.')

holdoff

结果如图:

三、MSK调制解调

(1)时延函数

functionout=delay(data,n,sample_number)

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

out(n*sample_number+1:

length(data))=data(1:

length(data)-n*sample_number);

(2)差分函数

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

(3)基带调制函数

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

%MSK基带调制

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

%data调制信号

%data_len码元个数

%sample_number每个码元采样点数

%Rb码元速率

%signal_out基带调制输出

%I_outI路输出

%Q_outQ路输出

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

%data_len=10;%码元个数

%sample_number=8;%采样点数

%Rb=16000;%码元速率

%data1=randint(1,data_len);

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

Tb=1/Rb;%码元时间

fs=Rb*sample_number;%采样速率

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

%差分编码

[data_diff]=difference(data);

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

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

%并串转换,延时

I

(1)=1;%fai0=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_len);

Q1(i:

sample_number:

data_len*sample_number)=Q(1:

data_len);

end

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

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

%乘加权函数

t=1/fs:

1/fs:

data_len*Tb;

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

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

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

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

%调制信号产生

signal_out=I_out+j*Q_out;

(4)主程序

clearall

closeall

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

%参数设置

data_len=10;%码元个数

sample_number=8;%采样个数

Rb=2400;%码元速率

fc=9600;%载波频率

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

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

%随机产生传输信号

data=rand_binary(data_len);

[data_diff]=difference(data);

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

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

%MSK基带调制

[signal_out,I_out,Q_out]=mod_msk(data,data_len,sample_number,Rb);

Tb=1/Rb;%码元时间

fs=Rb*sample_number;

t=1/fs:

1/fs:

data_len*Tb;

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

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

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

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

%中频搬移

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(I_temp)*1/Fs;

signal_i=I_temp.*cos(2*pi*fc*t);

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

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

figure

(1)

subplot(4,1,1)

plot(data,'.-');title('MSK传输的数据');xlabel('时间');ylabel('幅度')

subplot(4,1,2)

plot(data_diff,'.-');title('差分后的数据');xlabel('时间');ylabel('幅度')

subplot(4,1,3)

plot(I1,'.-');title('加权前I路');xlabel('时间');ylabel('幅度');

subplot(4,1,4)

plot(Q1,'.-');title('加权前Q路');xlabel('时间');ylabel('幅度');

figure

(2)

subplot(4,1,1)

plot(cos(pi*t/2/Tb),'.-');title('加权函数cos(πt/(2Tb))');xlabel('时间');ylabel('幅度')

subplot(412)

plot(sin(pi*t/2/Tb),'.-');title('加权函数sin(πt/(2Tb))');xlabel('时间');ylabel('幅度')

subplot(413)

plot(I_out,'.-');title('加权后I路');xlabel('时间');ylabel('幅度');

subplot(414)

plot(Q_out,'.-');title('加权后Q路');xlabel('时间');ylabel('幅度');

figure(3)

plot(signal_mod,'.-');title('调制后的信号');xlabel('时间');ylabel('幅度')

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

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

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

%加噪声

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);

I_dem=signal_mod1.*cos(2*pi*fc*t)*2;

I_dem=conv(I_dem,lpf);

I_dem=I_dem(N/2+1:

N/2+length(I_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(I_temp));

I_dem_out=zeros(1,length(I_dem)/multi);%抽取

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

fori=1:

length(I_dem_out)

I_dem_out(i)=I_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)*I_dem_out((i-1)*sample_number)-I_dem_out(i*sample_number)*Q_dem_out((i-1)*sample_number);

end

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

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

%判决

demod_data=demod_data>0;

demod_data=2*demod_data-1;

figure(4)

subplot(211)

stem(data,'o');title('MSK传输的数据');xlabel('时间');ylabel('幅度')

subplot(212)

stem(demod_data,'o')

title('解调后数据')

xlabel('时间');ylabel('幅度')

结果如图:

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

当前位置:首页 > 高等教育 > 农学

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

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