您现在的位置:首页 >> 通信 >> 内容

m基于stft方法的跳频信号解跳和GFSK信号解调,并输出跳频图案

时间:2022/12/17 22:39:18 点击:

  核心提示:01_160m,,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y5qVm5ly

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览





3.算法概述

        高斯频移键控GFSK (Gauss frequency Shift Keying),是在调制之前通过 一个高斯低通滤波器来限制信号的频谱宽度,以减小两个不同频率的载波切换时 的跳变能量,使得在相同的数据传输速率时频道间距可以变得更紧密。它是一种 连续相位频移键控调制技术,起源于FSK(Frequency- shift keying)。

4.部分源码

frameNumber = floor(length(x)/Nfft);

txBlockFFT  = zeros(frameNumber,Nfft);

%对信号进行短时傅里叶变换,得到跳频图案

for i = 0:frameNumber-1

    start                         = i*Nfft;

    txBlockFFT(i+1,:)             = fftshift(fft(x(start+1:start+Nfft)));

    %找出跳频图案中横轴上每个时间上对应的最大峰值,从时间开始到结束写个循环就行,

    [maxValue(i+1),maxIndex(i+1)] = max(abs(txBlockFFT(i+1,:)));

end

%计算峰值均值

Level = 10*mean(maxValue);

 

delta_f     = fs/Nfft;

f           = delta_f: delta_f: fs;

f           = f - fs/2;

 

%detect vaalid signal

validIndexCount             = 1;

validIndex                  = zeros(1,1);

validIndex(validIndexCount) = 0;

validFrameCount             = 0;

 

figure;

for i = 1:frameNumber-1

    i

    %峰值搜索

    if(max(abs(txBlockFFT(i+1,:))> Level))

        

        validFrameCount             = validFrameCount + 1;

        validFrame(validFrameCount) = i+1;

        if(abs(maxIndex(i+1) - validIndex(validIndexCount)) > 40)

           validIndexCount             = validIndexCount +1;

           validIndex(validIndexCount) = maxIndex(i+1) ;

           detectFHFc                  = validIndex(2:end)*fs/Nfft- fs/2;

        end

        

        detectFHResult(i+1) = maxIndex(i+1)*fs/Nfft- fs/2+fc;

        t                   = (0:length(detectFHResult)-1)*Nfft/fs;

        plot(t,detectFHResult,'c*');

        hold on

    end

    axis([0,0.1983,5.74e9,5.86e9]);

    pause(0.001);

end

hold on;

y_label = fc*ones(1,length(detectFHResult));

plot(t,y_label,'r');

ylim([fc-50e6 fc+50e6]);

xlabel('时间s')

ylabel('频率Hz');

grid on;

 

 

FT = zeros(1000,length(t));

%归一化频率

indx=find(detectFHResult==0);

detectFHResult1=detectFHResult;

detectFHResult1(indx)=[];

 

detectFHResult2 = detectFHResult-min(detectFHResult1);

indx=find(detectFHResult2<0);

detectFHResult2(indx)=0;

detectFHResult3 = floor(1000*detectFHResult2/max(detectFHResult2));

for i = 1:length(t)

    if detectFHResult3(i)>0

       FT(detectFHResult3(i),i) = 1;

    end

end

01_160m

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168