clear all;
close all;
clc;
N=1023;
fi=0;
f0=4000; %初始频率
fs=48e3; %抽样频率
k=2e5; %调频率
T=1/fs*N;
B=k*T;
f=zeros(1,N);
t=zeros(1,N);
global a;
a=0.5;
zero=zeros(N,1);
%xunlian_data=[1,1,1];
shuju_data=randsrc(1,2000,[1,0;0.5,0.5]);
%shuju_data=[1 0 0 1 1 1 0 0];
SNR=[-15:0];
%% 交织,加扰
M=size(shuju_data,2);
s=2^(ceil(log2(M)));
q=s/4-1;
M=length(shuju_data);
p=zeros(1,M);
p(1)=0;
for jj=2:M
p(jj)=mod(21*p(jj-1)+q,s);
while (p(jj)>=M)
p(jj)=mod(21*p(jj)+q,s);
end
end
data_interweave=zeros(1,M);
for ii=1:M
data_interweave(p(ii)+1)=shuju_data(ii);
end
figure;
% plot(data_interweave,'*r-');
hold; plot(shuju_data,'k>-');
%% 调制
SS=length(shuju_data);
fasong_data=[shuju_data];
hn=[1];
%figure;plot(hn);
for n=-511:511
up_LFM1(n+512)=cos(2*pi*(f0-B)*n/fs+pi*k*((n/fs)*(n/fs))); %产生信号t=n/fs
t(n+512)=n/fs; %时间
f(n+512)=n*fs/N; %频率
end
% k=data;
for n=-511:511
down_LFM1(n+512)=cos(2*pi*f0*n/fs-pi*k*((n/fs)*(n/fs))); %产生信号t=n/fs
t(n+512)=n/fs; %时间
f(n+512)=n*fs/N; %频率
end
for n=-511:511
up_LFM2(n+512)=cos(2*pi*f0*n/fs+pi*k*((n/fs)*(n/fs))); %产生信号t=n/fs
t(n+512)=n/fs; %时间
f(n+512)=n*fs/N; %频率
end
for n=-511:511
down_LFM2(n+512)=cos(2*pi*(f0+B)*n/fs-pi*k*((n/fs)*(n/fs))); %产生信号t=n/fs
t(n+512)=n/fs; %时间
f(n+512)=n*fs/N; %频率
end
len=length(shuju_data);
data1=zeros(1,len/2);
data2=zeros(1,len/2);
data3=zeros(1,len/2);
data4=zeros(1,len/2);
j=1;
for i=1:2:len
if (shuju_data(1,i)==0)&(shuju_data(1,i+1)==0)
data1(j)=1
else data1(j)=0
end
j=j+1;
end
up_modulate1=data1'*up_LFM1;
j=1;
for i=1:2:len
if (shuju_data(1,i)==0)&(shuju_data(1,i+1)==1)
data2(j)=1
else data2(j)=0
end
j=j+1;
end
down_modulate1=data2'*down_LFM1;
j=1;
for i=1:2:len
if (shuju_data(1,i)==1)&(shuju_data(1,i+1)==0)
data3(j)=1
else data3(j)=0
end
j=j+1;
end
up_modulate2=data3'*up_LFM2;
j=1;
for i=1:2:len
if (shuju_data(1,i)==1)&(shuju_data(1,i+1)==1)
data4(j)=1
else data4(j)=0
end
j=j+1;
end
down_modulate2=data4'*down_LFM2;
modulate_matrix=up_modulate1+down_modulate1+up_modulate2+down_modulate2;
modulate_signal=reshape(modulate_matrix',[],1);
figure;plot((1:length(modulate_signal))./fs,modulate_signal);
%wavwrite(modulate_signal,fs,'signal6.wav');
%% 解调
for iii=1:length(SNR)
jieshou_data=awgn(modulate_signal,SNR(iii));
N_jietiao=N;
r=0.002;
a1=[0:r:2];
% f=(1:N_jietiao)*fs/N_jietiao;
G1=zeros(length(a1),N_jietiao);
h1=0;
code_jietiao=[]; %解调出的编码
for kk=1:SS/2
h=0;
n_start=(kk-1)*N_jietiao+1;
n_end=kk*N_jietiao;
X=jieshou_data(n_start:n_end);
for l=1:length(a1)
T1=frft(X,a1(l));
G1(l,:)=abs(T1(:));
u1(l)=-cot(a1(l)*pi/2)*fs/(t(N)-t(1));
if(h1<=max(abs(T1(:))))
h1=max(abs(T1(:)));
p1=a1(l) %阶数
end
end
FF=frft(X,p1);
[aa,bb]=max(abs(FF));
u0=f(bb);
if(u0<0)
p1=2-p1;
end
k
tt=t(N)-t(1); %截取信号的持续时间
kk1=tt/(fs);
kr=-cot(p1*pi/2)/kk1 %k参数估计式
%lg_r(i)=abs(log10(r1));
f0
ff0=u0*csc(p1*pi/2); %f0的估计值
if(ff0<2000&&ff0>-2000) code_jietiao=[code_jietiao,0,0];
elseif(ff0>2000&&ff0<6000) code_jietiao=[code_jietiao,1,0];
elseif(ff0<-2000&&ff0>-6000) code_jietiao=[code_jietiao,0,1];
elseif(ff0>6000) code_jietiao=[code_jietiao,1,1];
end
end
[number(iii),ratio(iii)]=biterr(shuju_data,code_jietiao);
end
save Mfsk_frft ratio

wouderw
- 粉丝: 363
最新资源
- 本科毕业论文-—基于web的高校教材全套选订系统的设计与实现(1).doc
- 软件工程试题1(1).docx
- 计算机专业毕业自我鉴定500字(1).docx
- 模板C2-软件产品需求说明书.docx
- 企业营销型网站建设的核心原则(1).doc
- 信息化教学心得怎么写10篇(1).docx
- 新生办公软件培训策划书(1).doc
- 2023年软件项目工作总结及计划(3篇)(1).doc
- 网站服务合同集锦5篇(1).doc
- 大学毕设论文--供应链管理中的信息化问题研究(1).doc
- 浅谈通信工程信息技术1(1).docx
- 信息化技术在水利工程建设管理中的应用(1).docx
- 计算机软件实习报告六篇(1).docx
- 通信线路实训报告(1).doc
- 微课在电大计算机专业教学中的应用论文(1).doc
- 全自动洗衣机PLC设计(1).doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



- 1
- 2
前往页