⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myproject_fft.m

📁 该程序用以对2FSK信号调制解调的仿真程序
💻 M
字号:
%--------------2FSK调制解调-------------%
%---------------初始化信息--------------%
clear;clc
close all
a=[1 0 1 1 0 0 1]    %输入调制信号
n=length(a);
k1=1785;             %信号为0时的频率
k2=1615;             %信号为1时的频率
k3=100;              %波特率
k4=64000;            %采样频率64kHz(中频采样定理)
c=zeros(1,n*k4/k3);  %采样数据个数,每个比特内采样数据为k4/k3
b=zeros(1,n);        %输出信号
N=64;                %64点的FFT
%---------------基带调制信号------------%
d=zeros(1,N);       
for i=1:n
    t=0:1/k4:1/k3-1/k4;
    if(a(i)==1)
        c((i-1)*k4/k3+1:i*k4/k3)=sin(2*pi*k2*t);
    else
         c((i-1)*k4/k3+1:i*k4/k3)=sin(2*pi*k1*t);
    end
end                  %得到采样数据c
t1=0:1/k4:n/k3-1/k4;figure(1);
plot(t1,c);          %基带信号
%--------------载频调制信号-------------%
f1=488300;           %调制频率为488.3kHz
e=sin(2*pi*f1*t1);
cf=c.*e;             %调制后数据中频为490kHz
t1=0:1/k4:n/k3-1/k4;figure(2);
plot(t1,cf);         %调制信号
axis([0.01,0.03,-1,1])
xlabel('t'),ylabel('S0'),title('发送信号波形')
%-------------加入高斯白噪声------------%
snr=10;             
cf=awgn(cf,snr);     %加入高斯百噪声,信噪比为15dB
t1=0:1/k4:n/k3-1/k4;figure(3);
plot(t1,cf);         %加入噪声后的信号cf
axis([0.01,0.03,-1,1])
xlabel('t'),ylabel('S1'),title('接收信号波形')
%cg=cf;
%----------------信号抽取--------------%
cg=downsample(cf,10); %cf换为c,未经调制
%p=zeros(1,N);
%t2=0:1/k4*10:n/k3-1/k4*10;
%p=fft(cg,N);
%figure(4),plot(t2*100*N,p)
%下面程序为fft解调
%---------------数据fft算法解调--------------%
cd=zeros(1,N);
for m=1:n
    X=0;
    Y=0;
for i=1:N
   
    %if(i<=10)
    cd(i)=cg(i+N*(m-1));
    %else
     %   cd(i)=0;
    %end
    X=X+cd(i)*exp(-j*2*pi*27*(i-1)/N);   %计算X(27),对应频率为1800Hz ,为0   
    Y=Y+cd(i)*exp(-j*2*pi*29*(i-1)/N);   %计算X(29),对应频率为1600Hz,为1
end;
X=abs(X)^2;
Y=abs(Y)^2;
if(X>Y)
    b(m)=0;
else
    b(m)=1;
end                     %判决
%-------------求一个周期64点的DFT-------------%
for g=1:N
    W=0;
    for i=1:N
         W=W+cd(i)*exp(-j*2*pi*g*(i-1)/N);
    end
    d(g)=abs(W)^2;
end
t=1:N;
figure(5);
plot(t,d);     
xlabel('n'),ylabel('y'),title('码元1的64点FFT')
end
%--------判断调制数据与解调数据是否一致--------%
b
if(a==b)
    right=1;
else
    right=0;
end
n
right                    %right=1则检测正确
%-------------DSP数据转换(data)---------------%
data1=zeros(n*N,1);
data2=zeros(n*N,1);
cg=cg/max(abs(cg));         %数据归一化
for i=1:n*N
  data1(i)=fix(cg(i)*32768);%cg换为c,未经调制;小数表示法
end
for i=1:n*N
    if(data1(i)<0)
        data2(i)=65536+data1(i);
    else
        data2(i)=data1(i);
    end
end                         %若为正数则只乘以32768;若为负数,其绝对值部分乘以32768,再取反加1

data=dec2hex(data2);        %十进制转为十六进制
data;                       %信号输入数据(0100110)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -