1.软件版本

matlab2015b

2.算法仿真概述

在研究算法性能之前,首先需要分析各个参数对算法整体性能的影响,本文将重点考虑相空间重构参数tao和m,SVM支持向量机参数C和。这里分别对四个参数进行性能影响测试,首先对延迟参数进行分析,其仿真结果如下所示:

从图的仿真结果可知,随着延迟时间的增加,系统性能基本上呈现逐渐降低。但是当延迟时间大于5的时候,性能性能又出现了一定程度的提升。因此,该参数和性能性能并不是线性变化的关系。

从图2的仿真结果可知,随着嵌入维数的增加,系统性能基本上呈现逐渐提升。但当嵌入维数大于3的时候,系统的性能基本保持平稳状态。

从图3的仿真结果可知,随着惩罚因子的增加,系统的性能在出现一次提升之后,当惩罚因子大于50的时候,性能基本保持不变。

从图4的仿真结果可知,随着核函数参数的增加,系统的性能在出现了逐渐的提升,随着核函数参数的不断增加,系统性能提升逐渐变缓。

从上面对四个参数的对比仿真分析可知,四个参数对系统性能影响并不是满足线性关系的,四个参数相互之间有着一定程度的相关性,因此,采用传统的单个参数分析的方法并不能获得最优的参数设置。针对这个问题,本文将分别提出一种基于PSO优化参数和SVM的预测方法以及一种基于GA+PSO改进优化算法和SVM的预测方法。

首先,对于SVM算法的预测效果进行测试,通过人工任意设置四个参数(2,3,300.9962,2.93),并在481点到520点加入一个幅度为0.0004的随机的瞬间信号,然后使用SVM算法进行预测,其仿真结果如下图所示:

从图5的仿真结果可知,预测误差的整体RMSE值在10的-3次左右,在不考虑参数优化的情况下,通过任意设置参数的方式,其预测结果较差,上图仿真结果中,200点,780点均出现了错误的检测结果,从而因此错误预测。由此可见,通过参数优化对预测效果的提升有着决定性的作用。

从图6的仿真结果可知,预测误差的整体RMSE值在10的-4次左右,且改善了部分区域干扰的影响,上图中,200点的干扰信号已经小于481点和520点的幅度,在481点到520点的区域出现了较大的幅度,说明瞬时微弱信号的存在,总体而言,通过PSO优化之后,系统的预测性能得到了明显的改善。

3.部分源码

clc;
clear;
close all;
warning off;
addpath 'func\'
addpath 'GA_toolbox\'
addpath 'func_SVM_toolbox\'
addpath 'func_SVM_toolbox\java\'
addpath 'func_SVM_toolbox\java\libsvm\'
addpath 'func_SVM_toolbox\matlab\'
addpath 'func_SVM_toolbox\matlab-implement[by faruto]\'
addpath 'func_SVM_toolbox\python\'
addpath 'func_SVM_toolbox\svm-toy\'
addpath 'func_SVM_toolbox\tools\'
addpath 'func_SVM_toolbox\windows\'
%作为对比,直接通过SVM算法,没有通过优化算法直接进行算法的仿真;
rng(1);%先进行优化,设置1,然后设置2,调用优化值进行测试
SEL = 2;%导入数据
load 训练\X_train.mat;
load 测试\X_test.mat;X_train0 = X_train;
X_test0  = X_test;figure;
plot(X_test0);
xlabel('样本点n');
ylabel('幅值');[y1,input1ps] = mapminmax(X_train0');
[y2,input2ps] = mapminmax(X_test0');
X_train       = y1';
X_test        = y2';if SEL == 1%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%通过GA-PSO搜索最优的四个参数
%tao的范围
min1 = 1;
max1 = 10;
%m的范围
min2 = 1;
max2 = 10;
%C的范围
min3 = 1;
max3 = 1000;
%gamma的范围
min4 = 0;
max4 = 5;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
wmax = 0.9;
wmin = 0.1;
c1   = 2.5;
c2   = 2.5;
%速度的范围
vmin =-7;
vmax = 7;MAXGEN = 50;
NIND   = 10;Chrom  = crtbp(NIND,4*10);
%变量的区间
Areas  = [min1,min2,min3,min4;max1,max2,max3,max4];FieldD = [rep([10],[1,4]);Areas;rep([0;0;0;0],[1,4])];Data1 = zeros(NIND,4);
gen   = 0;for a=1:1:NIND %保证每个数值不一样,Data1(a,:) = [1,1,1000,0.3];      tao        = Data1(a,1);m          = Data1(a,2);C          = Data1(a,3);gamma      = Data1(a,4);%计算对应的目标值[epls,tao,m,C,gamma] = func_fitness(X_train,X_test,tao,m,C,gamma);E          = epls;J(a,1)     = E;va(a)   =(vmax-vmin)*rand(1)+vmin;vb(a)   =(vmax-vmin)*rand(1)+vmin;vc(a)   =(vmax-vmin)*rand(1)+vmin;vd(a)   =(vmax-vmin)*rand(1)+vmin;
end
[V,I] = min(J);
JI      = I;
tmpps   = Data1(JI,:);
taos    = round(tmpps(1));
ms      = round(tmpps(2));
Cs      = tmpps(3);
gammas  = tmpps(4);Objv  = (J+eps);
gen   = 0; while gen < MAXGEN;   genw       = wmax-gen*(wmax-wmin)/MAXGEN;FitnV = ranking(Objv);    Selch = select('sus',Chrom,FitnV);    Selch = recombin('xovsp',Selch,0.9);   Selch = mut(Selch,0.1);   phen1 = bs2rv(Selch,FieldD);   %基于粒子群的速度更新for i=1:1:NINDif gen > 1va(i)  = w*va(i) + c1*rand(1)*(phen1(i,1)-taos2)   + c2*rand(1)*(taos-taos2);vb(i)  = w*vb(i) + c1*rand(1)*(phen1(i,2)-ms2)     + c2*rand(1)*(ms-ms2);vc(i)  = w*vc(i) + c1*rand(1)*(phen1(i,3)-Cs2)     + c2*rand(1)*(Cs-Cs2);vd(i)  = w*vd(i) + c1*rand(1)*(phen1(i,4)-gammas2) + c2*rand(1)*(gammas-gammas2);elseva(i)  = 0;vb(i)  = 0;vc(i)  = 0;vd(i)  = 0;endendfor a=1:1:NIND  Data1(a,:) = phen1(a,:);      tao        = round(Data1(a,1) + 0.15*va(i));%遗传+PSOm          = round(Data1(a,2) + 0.15*vb(i));C          = Data1(a,3)       + 0.15*vc(i);gamma      = Data1(a,4)       + 0.15*vd(i);if tao >= max1tao  = max1;endif tao <= min1tao  = min1;end     if m >= max2m = max2;endif m <= min2m = min2;end  if C >= max3C = max3;endif C <= min3C = min3;end  if gamma >= max4gamma = max4;endif gamma <= min4gamma = min4;end   %计算对应的目标值[epls,tao,m,C,gamma] = func_fitness(X_train,X_test,tao,m,C,gamma);E                    = epls;JJ(a,1)              = E;end Objvsel=(JJ);    [Chrom,Objv]=reins(Chrom,Selch,1,1,Objv,Objvsel);   gen=gen+1; %保存参数收敛过程和误差收敛过程以及函数值拟合结论Error(gen) = mean(JJ);pause(0.2);[V,I] = min(Objvsel);JI      = I;tmpps    = Data1(JI,:);taos2    = round(tmpps(1));ms2      = round(tmpps(2));Cs2      = tmpps(3);gammas2  = tmpps(4);
end [V,I] = min(Objvsel);
JI      = I;
tmpps   = Data1(JI,:);
tao0    = round(tmpps(1));
m0      = round(tmpps(2));
C0      = tmpps(3);
gamma0  = tmpps(4);save GAPSO.mat tao0 m0 C0 gamma0
endif SEL == 2
load GAPSO.mat
%调用四个最优的参数
tao   = tao0;
m     = m0;
C     = C0;
gamma = gamma0;%先进行相空间重构
[Xn ,dn ] = func_CC(X_train,tao,m);
[Xn1,dn1] = func_CC(X_test,tao,m);t  = 1/1:1/1:length(dn1)/1;
f  = 0.05;
sn = 0.0002*sin(2*pi*f*t);
%叠加
dn1 = dn1 + sn';%SVM训练%做单步预测
cmd = ['-s 3',' -t 2',[' -c ', num2str(C)],[' -g ',num2str(gamma)],' -p 0.000001'];
model = svmtrain(dn,Xn,cmd);
%SVM预测
[Predict1,error1] = svmpredict(dn1,Xn1,model);
RMSE              = sqrt(sum((dn1-Predict1).^2)/length(Predict1));
Err               = dn1-Predict1;
%误差获取
clc;
RMSE figure;
plot(Err,'b');
title('混沌背景信号的预测误差');
xlabel('样本点n');
ylabel('误差幅值');Fs = 1;
y  = fftshift(abs(fft(Err)));
N  = length(y)
fc = [-N/2+1:N/2]/N*Fs;figure;
plot(fc(N/2+2:N),y(N/2+2:N));
xlabel('归一化频率');
ylabel('频谱');
text(0.06,0.07,'f=0.05Hz');end

4.参考文献

[1]郑红利. 基于相空间重构的混沌背景下微弱信号检测方法研究[D]. 南京信息工程大学, 2015.A07-06

【微弱瞬态信号检测】混沌背景下微弱瞬态信号的SVM检测方法的matlab仿真相关推荐

  1. 基于相空间重构的混沌背景下微弱信号检测方法仿真

    1.1算法参数取值对系统性能的影响 在研究算法性能之前,首先需要分析各个参数对算法整体性能的影响,本文将重点考虑相空间重构参数和m,SVM支持向量机参数C和.这里分别对四个参数进行性能影响测试,首先对 ...

  2. 复杂动背景下的“低小慢”目标检测技术

    复杂动背景下的"低小慢"目标检测技术,论文阅读和复现代码 本文的目的是要检测低空中的慢速目标,我复现了本文算法(修正了一些模块),下面给出复现的细节. 视觉显著性模型 视觉显著性反 ...

  3. linux跟踪内存检测原理,wooyun/Linux下基于内存分析的Rootkit检测方法.html at master · exitmsconfig/wooyun · GitHub...

    Linux下基于内存分析的Rootkit检测方法 - 路人甲 原文地址:http://drops.wooyun.org/tips/4731 0x00 引言 某Linux服务器发现异常现象如下图,确定被 ...

  4. 动态视场复杂背景下基于光流法的运动目标检测

    本文讲的基于光流法+配准的动目标检测算法,算法适用于复杂背景,即背景的特征点数量大于目标的特征点数量.配准是特征点配准,不做图像配准.图像配准+帧差法是常用的动态视场动目标检测算法,但在复杂背景下效果 ...

  5. matlab实现大气湍流退化模型算法,大气湍流下退化序列图像的目标检测方法

    引言 目标检测是计算机视觉的重要应用之一, 是后续目标识别.跟踪.目标分类以及行为分析的前提.远距离成像时通常会受到复杂变化的大气湍流影响, 使得成像结果中存在不规则抖动.偏移和模糊等退化现象[.因此 ...

  6. linux下基于内存分析的rootkit检测方法

    0x00 引言 某Linux服务器发现异常现象如下图,确定被植入Rootkit,但运维人员使用常规Rootkit检测方法无效,对此情况我们还可以做什么? 图1 被植入Rootkit的Linux服务器 ...

  7. 【信号检测】基于LSTM实现工业机器信号数据异常检测附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  8. 运动背景下的运动目标检测

    from:运动背景下的运动目标检测 各种目标检测方法介绍(懒人可以直接略过) 目标检测是一个老话题了,在很多算法当中都有它的身影.目标检测要做的就两件事:检测当前图片中有没有目标?如果有的话,在哪?按 ...

  9. 动态背景下的运动目标检测

    各种目标检测方法介绍(懒人可以直接略过) 目标检测是一个老话题了,在很多算法当中都有它的身影.目标检测要做的就两件事:检测当前图片中有没有目标?如果有的话,在哪?按照先验知识和背景运动来划分的话,目标 ...

  10. 基于机器学习和背景流量数据的加密恶意流量检测

    文章目录 1 加密流量现状 1.1 加密流量检测的必要性 1.2 加密恶意流量的检测方法 2 加密流量特征分析 2.1 可观察的数据元统计特征 2.1.1 传统流数据 2.1.2 字节分布 2.1.3 ...

最新文章

  1. pdf 天线理论与技术 钟顺时_虚拟仿真技术 | 基于HFSS仿真软件的微波天线课程教学探索...
  2. AutoML Vision教程:训练模型解决计算机视觉问题,准确率达94.5%
  3. ASP.NET Core实现类库项目读取配置文件
  4. 【报错解决】gcc编译运行c语言程序报警告warning: no newline at end of file
  5. centos8调整分辨率_Hyper-V 设置 CentOS 8 文本模式下分辨率
  6. Qt的安装和使用中的常见问题(详细版)
  7. Linux : 文件处理命令
  8. python如何导入多个文件_在python中导入多个文件
  9. How to show only next line after the matched one?
  10. SharePoint 实现ajax异步加载数据的几种方式
  11. 计算机中缺少qt5quick.dll,qt5quick.dll
  12. 通过串口波特率计算bit时间
  13. Objective-C ------ 多态
  14. 英语计算机自我介绍范文面试,计算机面试英文自我介绍范例
  15. redis 无法启动
  16. oracle的安装教程
  17. Web前端-Ajax-01
  18. 20145203 《信息安全系统设计基础》实验三 实时系统的移植
  19. i7 7700k linux,i7 7700K和i7 7740X哪个好?i7-7740X与7700K的区别对比详细评测
  20. php获取ip地址归属地

热门文章

  1. CVPR 2021 | 基于模型的图像风格迁移
  2. uniapp使用阿里巴巴在线图标库
  3. Java 基础常见面试题大全
  4. 大话机器人之云端架构
  5. Ruby程序语言入门
  6. Beijing54坐标系——Y坐标(6位数和8位数)区别
  7. 变量之八大基本数据类型#基本数据类型相互转换#基本数据类型与String字符串间转换
  8. 【Proteus仿真】基于STC15单片机简易数码管定时器时钟
  9. BJT与MOSFET与IGBT的区别
  10. 洛谷试炼场 普及组 动态规划的背包问题