首页 > 其他分享 >【跳频通信】基于MATLAB的跳频通信系统仿真

【跳频通信】基于MATLAB的跳频通信系统仿真

时间:2022-12-22 00:11:19浏览次数:48  
标签:fs detectFHResult SE1 strel 跳频 通信 MATLAB Nfft disk

1.软件版本

matlab2015a

2.系统程序

clc;
clear;
close all;
warning off;
addpath 'func\'
addpath 'func\mfiles\'


load data.mat
fs = 100e6;
Nfft = 4096;
fc = 5.8e9;
% [x1,t1,ssf1,yy1] = plotspec(x,1/fs);
% figure;
% plot(ssf1,yy1) % plot magnitude spectrum
% xlabel('frequency');
% ylabel('magnitude') % label the axes


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
SE = strel('disk',24);
FT1 = imdilate(FT,SE);
SE1 = strel('disk',4);
FT1a = imerode(FT1,SE1);
SE1 = strel('disk',8);
FT2a = imerode(FT1,SE1);
SE1 = strel('disk',12);
FT3a = imerode(FT1,SE1);
SE1 = strel('disk',16);
FT4a = imerode(FT1,SE1);
SE1 = strel('disk',20);
FT5a = imerode(FT1,SE1);
SE1 = strel('disk',23);
FT6a = imerode(FT1,SE1);
FTf = FT1a+FT2a+FT3a+FT4a+FT5a+FT6a;
[X,Y]=meshgrid(t,0.001:0.001:1); %横坐标为1953~2006,纵坐标1~54

figure;
contour(X,Y,FTf);
xlabel('time/s');
ylabel('归一化频率f/s');

3.仿真效果

 

 

 

 

 

 

 

 A01-160


标签:fs,detectFHResult,SE1,strel,跳频,通信,MATLAB,Nfft,disk
From: https://www.cnblogs.com/matlabfpga/p/16997484.html

相关文章

  • Matlab常用函数
    1、算数运算符符号角色更多信息+加法plus+一元加法uplus-减法minus-一元减法uminus.*按元素乘法times*矩阵乘法mtimes.......
  • 关于STM32CAN通信中过滤器两种模式的配置
    一、关于问题的阐述:最近在完善vesc的CAN通信相关代码,在配置过滤器时碰到了问题。1.1 对过滤器的两种模式理解不全面1.1.1关于过滤器的掩码模式。当时由于......
  • Matlab基本语法
    1、变量赋值a=[123;456;789]%矩阵形式赋值.a=1:10%从1到10的矩阵.a=1:2:10%固定步长为2的矩阵.......
  • Ubuntu18.04下调用fastdds实现通信
    提纲1、编写idl2、fastddsgen生成cpp的源代码文件3、编译生成可执行文件4、执行可执行文件完成通讯1、编写idl现在我们可以编写一个简单的IDL:2、fastddsgen生......
  • 16【TCP、UDP、网络通信】
    上一篇:​​15【IO流增强】​​下一篇:​​17【测试单元、反射、注解、Lombok插件】​​目录:​​【JavaSE零基础系列教程目录】​​文章目录​​16【TCP、UDP、网络通信】​......
  • Matlab pid参数调节工具箱
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • m基于MATLAB的FM调制收音机仿真实现
    1.算法概述那么FM调制端的基本原理图如下所示:    FM解调 FM解调的基本原理框图为:           在不考虑频偏的情况下,FM解调运算就相当于FM调......
  • 基于MATLAB的pso粒子群算法优化——计算样本再拟合函数最大值
    1.算法概述       PSO是粒子群优化算法(——ParticleSwarmOptimization)的英文缩写,是一种基于种群的随机优化技术,由Eberhart和Kennedy于1995年提出。粒子群算法模......
  • m无线通信的调制解调过程的matlab仿真,包括ASK,FSK,PSK
    1.算法概述      传输模拟信号时一样,传输数字信号时也有三种基本的调制方式:幅移键控(ASK)、频移键控(FSK)和相移键控(PSK)。它们分别对应于用载波(正弦波)的幅度、频......
  • 北汇信息与臻融科技达成战略合作,共同推进分布式通信技术在汽车领域的应用
      南京臻融科技有限公司(简称瑧融科技)是从事中间件研发的创新型国家高新技术企业,拥有多项具有完全自主知识产权的核心技术和中间件产品,在网络化计算、中间件平台、云边......