這幾天繼續不斷的看論文和寫文章,而且還在射陽老家的書屋里面看了很多書,這可以幫助我排解腦中的郁悶!畢竟算法的進展過程中要死大量的腦細胞。死的再多,只要能出結果那也值,繼續講課!
之前在第六章 智能手環之技術應用(10)—心率算法的優化(LMS算法)文章中給出了LMS算法的函數程序,那么如何應用到具體信號的濾波過程中呢?一起來看程序吧!本文不僅給出理論仿真程序,還會結合理論仿真程序逐步的寫出用于PPG信號自適應濾波的程序。兩部分程序的比較學習會有助于大家對于理論的掌握!!!
本系列文章的產生伴隨著研發過程的深入,所以程序的復雜度是逐漸增加的。強烈建議大家從頭開始看起,慢慢的增加難度!突然看本篇,很多人應該理解不了!但本文給出的算法程序的針對性特別強也特別實用!
上菜了!
% example_lms_v1
% data:2021-10-25
%%% 程序說明
% 演示lms算法完成濾波的過程!
close all;
% 周期信號的產生
t = 0:99;
xs = 10*sin(0.5*t);
figure;
subplot(2,1,1);
plot(t,xs);grid;
ylabel(‘幅值’);
title(‘輸入周期性信號’);
% 噪聲信號的產生
randn(‘state’,sum(100*clock));
xn = randn(1,100);
subplot(2,1,2);
plot(t,xn);grid;
ylabel(‘幅值’);
xlabel(‘時間’);
title(‘隨機噪聲信號’);
%%% 信號濾波
xn = xs+xn; % 含有噪聲的周期信號
xn = xn‘ ; % 輸入信號序列
dn = xs’ ; % 預期結果序列
M = 20 ; % 濾波器的階數
rho_max = max(eig(xn*xn‘)); % 輸入信號相關矩陣的最大特征值
mu = rand()*(1/rho_max) ; % 收斂因子 0 《 mu 《 1/rho
[yn,W,en] = function_LMS(xn,dn,M,mu);
% 繪制濾波器輸入信號
figure;
subplot(2,1,1);
plot(t,xn);
grid;
ylabel(’幅值‘);
xlabel(’時間‘);
title(’濾波器輸入信號‘);
% 繪制自適應濾波器輸出信號
subplot(2,1,2);
plot(t,yn);
grid;
ylabel(’幅值‘);
xlabel(’時間‘);
title(’自適應濾波器輸出信號‘);
% 繪制自適應濾波器輸出信號,預期輸出信號和兩者的誤差
figure
plot(t,yn,’b‘,t,dn,’g‘,t,dn-yn,’r‘);
grid;
legend(’自適應濾波器輸出‘,’預期輸出‘,’誤差‘);
ylabel(’幅值‘);
xlabel(’時間‘);
title(’自適應濾波器‘);
figure
plot(en);
grid;
那么如果不用已知信號作為期望信號,會有什么樣的結果呢?這部分內容以后會詳細講,先把實際采集到的PPG信號的LMS濾波程序寫出來,丑媳婦總要見公婆!理論聯系實際!如果按照之前的寫法,程序中就無法把濾波器輸出的信號作為期望信號然后計算損失函數的值了!
只能改變函數的用法了!再聯系到PPG信號中的實際應用,之前在應用程序中使用這種函數的方法肯定行不通!!!本文內容接近三千字,怎么這么長?因為后面有PPG信號的LMS濾波程序!
責任編輯:haq
-
仿真
+關注
關注
50文章
4048瀏覽量
133431 -
信號
+關注
關注
11文章
2781瀏覽量
76649 -
智能手環
+關注
關注
47文章
792瀏覽量
72838
原文標題:數字信號處理之信號處理仿真 第六章 智能手環之技術應用(11)—心率算法的優化(LMS算法)
文章出處:【微信號:gh_30373fc74387,微信公眾號:通信工程師專輯】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論