基于相空间重构的混沌背景下微弱信号检测方法仿真
1.1算法參數取值對系統性能的影響
??????? 在研究算法性能之前,首先需要分析各個參數對算法整體性能的影響,本文將重點考慮相空間重構參數和m,SVM支持向量機參數C和。這里分別對四個參數進行性能影響測試,首先對延遲參數進行分析,其仿真結果如下所示:
?
圖1 延遲參數對系統預測性能的影響仿真分析
??????? 從圖1的仿真結果可知,隨著延遲時間的增加,系統性能基本上呈現逐漸降低。但是當延遲時間大于5的時候,性能性能又出現了一定程度的提升。因此,該參數和性能性能并不是線性變化的關系。
?
圖2 嵌入維數對系統預測性能的影響仿真分析
??????? 從圖2的仿真結果可知,隨著嵌入維數的增加,系統性能基本上呈現逐漸提升。但當嵌入維數大于3的時候,系統的性能基本保持平穩狀態。
?
圖3 懲罰因子對系統預測性能的影響仿真分析
??????? 從圖3的仿真結果可知,隨著懲罰因子的增加,系統的性能在出現一次提升之后,當懲罰因子大于50的時候,性能基本保持不變。
?
圖4 核函數參數對系統預測性能的影響仿真分析
??????? 從圖4的仿真結果可知,隨著核函數參數的增加,系統的性能在出現了逐漸的提升,隨著核函數參數的不斷增加,系統性能提升逐漸變緩。
??????? 從上面對四個參數的對比仿真分析可知,四個參數對系統性能影響并不是滿足線性關系的,四個參數相互之間有著一定程度的相關性,因此,采用傳統的單個參數分析的方法并不能獲得最優的參數設置。針對這個問題,本文將分別提出一種基于PSO優化參數和SVM的預測方法以及一種基于GA+PSO改進優化算法和SVM的預測方法。
1.2混沌背景下微弱瞬態信號的檢測方法仿真與分析
???????? 首先,對于SVM算法的預測效果進行測試,通過人工任意設置四個參數(2,3,300.9962,2.93),并在481點到520點加入一個幅度為0.0004的隨機的瞬間信號,然后使用SVM算法進行預測,其仿真結果如下圖所示:
?
圖5 基于SVM算法的微弱瞬態信號檢測仿真
??????? 從圖5的仿真結果可知,預測誤差的整體RMSE值在10的-3次左右,在不考慮參數優化的情況下,通過任意設置參數的方式,其預測結果較差,上圖仿真結果中,200點,780點均出現了錯誤的檢測結果,從而因此錯誤預測。由此可見,通過參數優化對預測效果的提升有著決定性的作用。
?
?
圖6 基于PSO優化的SVM算法的微弱瞬態信號檢測仿真
??????? 從圖6的仿真結果可知,預測誤差的整體RMSE值在10的-4次左右,且改善了部分區域干擾的影響,上圖中,200點的干擾信號已經小于481點和520點的幅度,在481點到520點的區域出現了較大的幅度,說明瞬時微弱信號的存在,總體而言,通過PSO優化之后,系統的預測性能得到了明顯的改善。
???????? 下面對通過GAPSO聯合優化參數的SVM進行對含有微弱瞬態信號的混沌背景信號進行預測,通過GAPSO優化,獲得(2,2,551.6683,0.2098),獲得如下的仿真結果:
圖7基于GAPSO優化的SVM算法的微弱瞬態信號檢測仿真
??????? 從圖7的仿真結果可知,預測誤差的整體RMSE值在10的-4次左右,且改善了部分區域干擾的影響,上圖中,在481點到520點的區域出現了較大的幅度,說明瞬時微弱信號的存在。在481點和520點的幅度相對于其余誤差信號的幅度明顯大于基于PSO優化,總體而言,通過GAPSO優化之后,系統的預測性能得到了明顯的改善,且性能優于基于PSO優化的SVM預測算法。
表1 三種算法微弱信號的檢測結果對比
| 瞬態信號檢測RMSE | 周期信號檢測RMSE | |
| SVM | 3.3310e-04 | 0.0014 |
| PSO+SVM | 3.2514e-04 | 3.7837e-04 |
| GAPSO+SVM | 2.2683e-04 | 2.5819e-04 |
從三種算法的RMSE值對比可知,GAPSO+SVM算法性能最優。
clc;
clear;
close all;
warning off;
addpath 'func\'
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算法,沒有通過優化算法直接進行算法的仿真;
%四大參數%參數為人工的任意的設置方式產生
tao ? = 2;
m ? ? = 3;
C ? ? = 300.9962;
gamma = 2.93;
%導入數據
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';
?
%先進行相空間重構
[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');
??
A-07-06
總結
以上是生活随笔為你收集整理的基于相空间重构的混沌背景下微弱信号检测方法仿真的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多agv系统调度的MATLAB仿真
- 下一篇: 连续连通域检测算法的MATLAB仿真