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