Kalman濾波、擴展Kalman濾波、無跡Kalman濾波和異步濾波的原理及其Matlab代碼

目錄

  • 引言
  • Kalman濾波
    • 代碼及其結果展示
  • 擴展Kalman濾波
    • 代碼及其結果展示
  • 無跡Kalman濾波
    • 無跡變換
    • 無跡Kalman濾波
    • 代碼及其結果展示
  • 異步無跡Kalman濾波
    • 原理
    • 代碼及其結果展示

引言

本文給出了Kalman Filter(卡爾曼濾波)、Extended Kalman Filter(擴展卡爾曼濾波)、Unscented Kalman Filter(無跡卡爾曼濾波)和Asynchronous Filter(異步濾波)的原理及其Matlab代碼。不同的濾波算法以函數形式在不同的m文件,調用即可使用。

Kalman濾波

該部分展示了kalman濾波的代碼及其仿真結果。
狀態轉移模型
x ( t + 1 ) = A x ( t ) + Γ w ( t ) x(t+1)=Ax(t)+Γw(t) x(t+1)=Ax(t)+Γw(t)
其中 x ( t ) ∈ R n ? 1 x(t)∈R^{n*1} x(t)Rn?1表示t時刻的狀態向量, A ∈ R m ? m A∈R^{m*m} ARm?m是狀態轉移矩陣,Γ是噪聲系數矩陣,w(t)是t時刻的過程噪聲向量, 其為零均值高斯白噪聲,協方差陣為Q>0。
量測模型
y i ( t ) = H i x ( t ) + v i ( t ) yi(t)=Hi x(t)+vi(t) yi(t)=Hix(t)+vi(t)
,其中 y i ( t ) yi(t) yi(t)表示t時刻傳感器網絡中的傳感器i的量測向量, H i ∈ R l ? m Hi∈R^{l*m} HiRl?m是觀測矩陣,vi(t)是t時刻的量測噪聲向量,其為零均值高斯白噪聲,協方差陣為Ri>0。
初始化:
在這里插入圖片描述
在這里插入圖片描述
狀態更新:
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

代碼及其結果展示

核心代碼:(完整代碼見文末)

function [estimate, cov_error_estimate] = kalman_filter(measure, x_last,...P_last,flag)
%kalman_filter 基本kalman濾波算法
%   輸入:量測值,上一時刻估計,上一時刻估計誤差協方差,是否預測的標志
%   輸出:當前時刻估計,當前時刻估計誤差協方差
% 當flag為1,則跳過預測步驟
%%
% 狀態轉移矩陣
global A;
% 系統噪聲系數矩陣
global gama;
% 系統噪聲協方差
global Q;
% 量測矩陣
global H;
% 量測噪聲協方差
global R;
%%
% 如果全零,即無初始化
if ~any(x_last)if measure==0estimate = x_last;cov_error_estimate = P_last;else%   如果是0時刻,則取量測值對應的狀態為當前時刻估計,9倍的量測誤%差協方差陣為當前時刻估計誤差協方差。estimate = H\measure;cov_error_estimate = H\(2*(R))/H';end
elseif flag==1forecast=x_last;P_forecast=P_last;elseforecast = A * x_last;P_forecast = (A*P_last *A'+ gama*Q* gama');endif measure==0estimate=forecast;cov_error_estimate = P_forecast;elsekalman_gain = P_forecast*H'/(H*P_forecast*H'+R);estimate = forecast + kalman_gain*(measure - H*forecast);cov_error_estimate = P_forecast - kalman_gain*H*P_forecast;end
end
end

結果展示:
在這里插入圖片描述
在這里插入圖片描述

擴展Kalman濾波

擴展卡爾曼濾波是標準卡爾曼濾波在非線性情形下的一種擴展形式,EKF算法是將非線性函數進行泰勒展開,省略高階項,保留展開項的一階項,以此來實現非線性函數線性化,最后通過卡爾曼濾波算法近似計算系統的狀態估計值和方差估計值,對信號進行濾波。
狀態轉移方程與量測方程
在這里插入圖片描述
泰勒線性化
在這里插入圖片描述
在這里插入圖片描述
預測步驟
在這里插入圖片描述
估計步驟
在這里插入圖片描述

代碼及其結果展示

核心代碼:(完整代碼見文末)

function [estimate, cov_error_estimate] = extend_kf(measure, x_last, P_last,...flag,radar)
%kalman_filter 擴展kalman濾波算法
%   輸入:量測值,上一時刻估計,上一時刻估計誤差協方差,是否預測的標志,
%雷達的狀態信息
%   輸出:當前時刻估計,當前時刻估計誤差協方差
% 當flag為1,則跳過預測步驟
%%
% 狀態轉移矩陣
global A;
% 系統噪聲系數矩陣
global gama;
% 系統噪聲協方差
global Q;
% 量測噪聲協方差
global R;
%%
% 如果全零,即無初始化
if ~any(x_last)if measure==0estimate = x_last;cov_error_estimate = P_last;else%   如果是0時刻,則取量測值對應的狀態為當前時刻估計,9倍的量測誤%差協方差陣為當前時刻估計誤差協方差。%   此處為9的原因是3倍的標準差為百分之95的可能的誤差值,可以認為%包含了最大誤差的情況。estimate=[radar(1,1)+measure(1,1)*cos(measure(3,1))*cos(measure(2,1));radar(2,1)+measure(1,1)*sin(measure(3,1));radar(3,1)-measure(1,1)*cos(measure(3,1))*sin(measure(2,1));0;0;0];cov_error_estimate = 99*[1,0,0,1,0,0;0,1,0,0,1,0;0,0,1,0,0,1;1,0,0,1,0,0;0,1,0,0,1,0;0,0,1,0,0,1];end
elseif flag==1forecast=x_last;P_forecast=P_last;elseforecast = A * x_last;P_forecast = (A*P_last *A'+ gama*Q* gama');endx=forecast(1,1)-radar(1,1);y=forecast(2,1)-radar(2,1);z=forecast(3,1)-radar(3,1);dist = norm([x;y;z]);dist_horiz = norm([x;z]);H=[x/dist,y/dist,z/dist,0,0,0;z/dist_horiz^2,0,-x/dist_horiz^2,0,0,0;-x*y/(dist^2*dist_horiz),dist_horiz/dist^2,-y*z/(dist_horiz*dist^2),0,0,0];z_est = measure_func([x;y;z]);if measure==0estimate=forecast;cov_error_estimate = P_forecast;elsekalman_gain = P_forecast*H'/(H*P_forecast*H'+R);estimate = forecast + kalman_gain*(measure - z_est);cov_error_estimate = P_forecast - kalman_gain*H*P_forecast;end
end
end

結果展示:
在這里插入圖片描述
在這里插入圖片描述

無跡Kalman濾波

無跡變換

設存在一個m維隨機向量在這里插入圖片描述和n維隨機向量z,其中z與x為非線性關系
在這里插入圖片描述
x的均值為在這里插入圖片描述,方差為P;x通過非線性映射得到z。無跡變換就是根據x的統計特性,得到一族點集,該點集稱為為σ點;將σ點進行非線性映射可以得的新的點集;通過新的點集得到z的統計特性。一般情況下σ點的數目為2n+1。
無跡變換的具體過程可描述如下:
(1)計算2n+1個點及其權系數
在這里插入圖片描述
在這里插入圖片描述
其中,在這里插入圖片描述決定點的散布程度,通常取正數,在這里插入圖片描述通常取為0,β用來代表x的分布情況(正態分布的情況下,最佳值為2),在這里插入圖片描述表示矩陣的平方根的第i列,在這里插入圖片描述為用于計算均值的權重,在這里插入圖片描述為用于計算方差時的權重。
(2)計算σ點通過非線性函數的傳播結果
在這里插入圖片描述
從而可得
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
此時,我們得到了無跡變換的結果。

無跡Kalman濾波

針對量測為非線性、狀態轉移為線性的系統模型,無跡Kalman濾波是用無跡變換進行經典卡爾曼濾波中量測方程的映射。
每個遞推無跡Kalman濾波的具體步驟如下:
(1)針對線性目標狀態轉移模型,對于給定的估計和估計誤差協方差,基于經典Kalman濾波求狀態預測以及預報誤差的協方差陣。
在這里插入圖片描述
在這里插入圖片描述

(2)針對非線性傳感器量測模型,用無跡變換求σ點,并通過量測方程的傳播。
計算σ點,即
在這里插入圖片描述
計算輸出的一步提前預測,即
在這里插入圖片描述
在獲得新的量測后,進行濾波更新,
在這里插入圖片描述

代碼及其結果展示

核心代碼:(完整代碼見文末)

function [estimate, cov_error_estimate] = unscented_kf(measure, x_last, P_last,...flag,radar)
%kalman_filter 擴展kalman濾波算法
%   輸入:量測值,上一時刻估計,上一時刻估計誤差協方差,是否預測的標志,
%雷達的狀態信息
%   輸出:當前時刻估計,當前時刻估計誤差協方差
% 當flag為1,則跳過預測步驟
%%
% 狀態轉移矩陣
global A;
% 系統噪聲系數矩陣
global gama;
% 系統噪聲協方差
global Q;
% 量測噪聲協方差
global R;
%%
% 如果全零,即無初始化
if ~any(x_last)if measure==0estimate = x_last;cov_error_estimate = P_last;else%   如果是0時刻,則取量測值對應的狀態為當前時刻估計,9倍的量測誤%差協方差陣為當前時刻估計誤差協方差。%   此處為9的原因是3倍的標準差為百分之95的可能的誤差值,可以認為%包含了最大誤差的情況。% TODO 應該設置為根據實際對象進行變化,這里強制設置為6個狀態,%后續對無跡濾波和此處進行改變,讓其可以根據實際情況進行隨動estimate=[radar(1,1)+measure(1,1)*cos(measure(3,1))*cos(measure(2,1));radar(2,1)+measure(1,1)*sin(measure(3,1));radar(3,1)-measure(1,1)*cos(measure(3,1))*sin(measure(2,1));0;0;0];cov_error_estimate = 1*[1,0,0,1,0,0;0,1,0,0,1,0;0,0,1,0,0,1;1,0,0,1,0,0;0,1,0,0,1,0;0,0,1,0,0,1];end
elseif flag==1forecast=x_last;P_forecast=P_last;elseforecast = A * x_last;P_forecast = (A*P_last *A'+ gama*Q* gama');endif measure==0estimate=forecast;cov_error_estimate = P_forecast;else[forecast_point,forecast_weight]=get_point(forecast,P_forecast,size(forecast,1));measure_point = zeros(size(measure,1),size(forecast_point,2));for cou_point = 1:size(forecast_point,2)measure_point(:,cou_point)=measure_func(forecast_point(1:3,cou_point)-radar(1:3,1));endmeasure_expect = sum(forecast_weight(1,:).*measure_point,2);P_z = forecast_weight(2,:).*(measure_point-measure_expect)*...(measure_point-measure_expect)'+R;P_xz = forecast_weight(2,:).*(forecast_point-forecast)*...(measure_point-measure_expect)';kalman_gain = P_xz/P_z;estimate = forecast + kalman_gain*(measure - measure_expect);cov_error_estimate = P_forecast - kalman_gain*P_z*kalman_gain';end
end
end

結果展示:
在這里插入圖片描述

異步無跡Kalman濾波

在目標狀態估計過程中,量測通常以離散化采樣給出,同時帶有一個探測時間標志。分布式傳感器網絡是對多個量測進行處理。由于傳感器網絡傳輸存在隨機的時間延遲,且各個節點對于量測的預處理時間存在隨機性,很可能出現源于某個目標的較晚的量測到達某一節點后較早的量測才到達該節點,這種情況就稱為非順序量測。在目標狀態估計過程中,傳感器節點通常僅保存航跡的充分統計量。這樣,當接收到一個延遲的量測時,假定該量測的時戳為t,為了實時性,估計結果被更新到tz>t時刻,此時需要使用來自時刻t的量測更新tz時刻的估計。這就是在實際的多傳感器系統中常見的負時間量測更新問題,原因是t-tz為負,而在標準的濾波問題中總假定為非負。通常情況下的濾波算法不適用于這種情況,因此,就需要對適用于異步濾波的算法進行研究。

原理

首先,我們需要對非線性目標運動模型以不同的時間間隔進行重新的離散化定義。對于任意時間間隔的狀態轉移矩陣為在這里插入圖片描述;任意時間間隔的噪聲系數矩陣為在這里插入圖片描述;任意時間間隔的系統噪聲為
在這里插入圖片描述
本文僅研究高斯白噪聲隨機過程,則根據隨機積分的性質可知,離散化后的系統噪聲仍為均值為0的高斯白噪聲,其協方差矩陣為
在這里插入圖片描述
為了便于描述,假定當前時刻為t,而最新的量測時刻為td,且td的量測為t時刻的延遲量測,也就是說
在這里插入圖片描述

此時,
在這里插入圖片描述
其中,d為td時刻的簡化標記。可以得到
在這里插入圖片描述
其中在這里插入圖片描述在這里插入圖片描述的逆矩陣,表示后向狀態轉矩矩陣。
我們要解決的問題為:在t時刻,已知目標的狀態估計和估計誤差協方差。同時,我們得到了td時刻的量測。此時,需要用td時刻的量測來更新t時刻狀態估計和估計誤差協方差,即計算
在這里插入圖片描述
其中在這里插入圖片描述
在最小均方誤差準則下,對于非順序量測問題的最優更新算法為
在這里插入圖片描述
在這里插入圖片描述

其中,
在這里插入圖片描述

為了求出在這里插入圖片描述,我們需要得到Kd和的值。首先
在這里插入圖片描述
其中
在這里插入圖片描述

由傳感器探測模型及最小均方誤差準則得
在這里插入圖片描述
可知,
在這里插入圖片描述
其中
在這里插入圖片描述
在這里插入圖片描述的σ點為
在這里插入圖片描述

根據傳感器探測模型,得
在這里插入圖片描述
求得計算在這里插入圖片描述的σ點為
在這里插入圖片描述
同理,根據已知的在這里插入圖片描述,求得計算在這里插入圖片描述的σ點為
在這里插入圖片描述
計算量測的一步提前預測,即
在這里插入圖片描述
可知
在這里插入圖片描述
此時,因為在這里插入圖片描述等于0,可得在這里插入圖片描述。由最小均方誤差準則可得
在這里插入圖片描述
帶入式子可求在這里插入圖片描述。根據式子可得在這里插入圖片描述
在這里插入圖片描述
可得在這里插入圖片描述的σ點為
在這里插入圖片描述
根據非線性變換,可得在這里插入圖片描述的σ點為
在這里插入圖片描述
在這里插入圖片描述的σ點可求
在這里插入圖片描述
可得Kd;將Kd和在這里插入圖片描述的帶入可得在這里插入圖片描述。接下來,將在這里插入圖片描述在這里插入圖片描述帶入即可求出在這里插入圖片描述。至此,完成了用td時刻的量測來更新t時刻狀態估計和估計誤差協方差。

代碼及其結果展示

核心代碼:(完整代碼見文末)

function [estimate, cov_error_estimate] = unscented_aysn(measure_aysn,t_asyn,...x_last, P_last,flag,radar,last_est_last,last_P_last,measure)
%kalman_filter 擴展kalman濾波算法
%   輸入:量測值,上一時刻估計,上一時刻估計誤差協方差,是否預測的標志,
%雷達的狀態信息
%   輸出:當前時刻估計,當前時刻估計誤差協方差
% 當flag為1,則跳過預測步驟
%%
global t_step;
% 狀態轉移矩陣
global A;
% 系統噪聲系數矩陣
global gama;
% 系統噪聲協方差
global Q;
% 量測噪聲協方差
global R;
%%
last_est_last = A * last_est_last;
last_P_last = (A*last_P_last *A'+ gama*Q* gama');
% 如果全零,即無初始化
if ~any(x_last)if measure_aysn==0estimate = x_last;cov_error_estimate = P_last;else%   如果是0時刻,則取量測值對應的狀態為當前時刻估計,9倍的量測誤%差協方差陣為當前時刻估計誤差協方差。%   此處為9的原因是3倍的標準差為百分之95的可能的誤差值,可以認為%包含了最大誤差的情況。estimate=[radar(1,1)+measure_aysn(1,1)*cos(measure_aysn(3,1))*cos(measure_aysn(2,1));radar(2,1)+measure_aysn(1,1)*sin(measure_aysn(3,1));radar(3,1)-measure_aysn(1,1)*cos(measure_aysn(3,1))*sin(measure_aysn(2,1));0;0;0];cov_error_estimate = 1*[1,0,0,1,0,0;0,1,0,0,1,0;0,0,1,0,0,1;1,0,0,1,0,0;0,1,0,0,1,0;0,0,1,0,0,1];end
elseif flag==1forecast=x_last;P_forecast=P_last;elseforecast = A * x_last;P_forecast = (A*P_last *A'+ gama*Q* gama');endif measure_aysn==0estimate=forecast;cov_error_estimate = P_forecast;elsenum_state = size(forecast,1);Q_td_t =  Q_t1_t2(t_asyn,t_step);[w_td2t_t_1_point,~] = ...get_point(zeros(num_state,1), Q_td_t,3);[last_est_point,last_est_weight] = ...get_point(last_est_last, last_P_last, 3);measure_t_1_point = zeros(size(measure,1),size(last_est_point,2));for cou_point = 1:size(last_est_point,2)measure_t_1_point(:,cou_point)=measure_func(...last_est_point(1:3,cou_point)-radar(1:3,1));endmeasure_expect_t_1 = sum(last_est_weight(1,:).*measure_t_1_point,2);cov_zt_t_1 = last_est_weight(2,:).*(measure_t_1_point-...measure_expect_t_1)*(measure_t_1_point-measure_expect_t_1)'+R;% TODO 應該修正R后的pointcov_w_td2t_zt_t_1= last_est_weight(2,:).*(w_td2t_t_1_point)*...(measure_t_1_point-measure_expect_t_1)';w_td2t = cov_w_td2t_zt_t_1/cov_zt_t_1*(measure-...measure_expect_t_1);cov_w_td2t_t = Q_td_t-cov_w_td2t_zt_t_1/cov_zt_t_1*...cov_w_td2t_zt_t_1';[forecast_point,forecast_weight]=get_point(forecast,P_forecast,3);% (3-25)backcast = A_t1_t2(t_step,t_asyn)*(forecast-w_td2t);P_backcast = A_t1_t2(t_step,t_asyn)*P_forecast*...(A_t1_t2(t_step,t_asyn))'-A_t1_t2(t_step,t_asyn)*...(cov_w_td2t_t)*(A_t1_t2(t_step,t_asyn))';[backcast_point,backcast_weight]=get_point(backcast,P_backcast,3);measure_expect_t_point = zeros(size(measure,1),size(backcast_point,2));for cou_point = 1:size(backcast_point,2)measure_expect_t_point(:,cou_point)=measure_func(...backcast_point(1:3,cou_point)-radar(1:3,1));endmeasure_expect_t = sum(backcast_weight(1,:).*measure_expect_t_point,2);% (3-36)P_z = backcast_weight(2,:).*(measure_expect_t_point-...measure_expect_t)*(measure_expect_t_point-measure_expect_t)'+R;% (3-37)         % TODO 應該修正R后的pointP_xz = forecast_weight(2,:).*(forecast_point-forecast)*...(measure_expect_t_point-measure_expect_t)';kalman_gain = P_xz/P_z;estimate = forecast + kalman_gain*(measure_aysn - measure_expect_t);cov_error_estimate = P_forecast - P_xz/P_z*P_xz';end
end
end

結果展示:
在這里插入圖片描述
在這里插入圖片描述
完整代碼分為多個文件,數量較多,無法放在文章中。完整代碼在公眾號(沸騰的火鍋資源號)中自取。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/214483.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214483.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214483.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode 98. 驗證二叉搜索樹

leetcode 98. 驗證二叉搜索樹 題目 給你一個二叉樹的根節點 root ,判斷其是否是一個有效的二叉搜索樹。 有效 二叉搜索樹定義如下: 節點的左子樹只包含 小于 當前節點的數。 節點的右子樹只包含 大于 當前節點的數。 所有左子樹和右子樹自身必須也是…

vue3 引入 markdown編輯器

參考文檔 安裝依賴 pnpm install mavon-editor // "mavon-editor": "3.0.1",markdown 編輯器 <mavon-editor></mavon-editor>新增文本 <mavon-editor ref"editorRef" v-model"articleModel.text" codeStyle"…

Adams與Abaqus沖突問題

隨著工程仿真軟件的廣泛應用&#xff0c;Adams和Abaqus已成為眾多工程師的首選工具。然而&#xff0c;在使用過程中&#xff0c;一些用戶可能會遇到這兩個軟件之間的沖突問題&#xff0c;導致無法正常進行仿真分析。為了幫助大家解決這一難題&#xff0c;我們推出了一篇關于Ada…

Softmax回歸

一、Softmax回歸關鍵思想 1、回歸問題和分類問題的區別 Softmax回歸雖然叫“回歸”&#xff0c;但是它本質是一個分類問題。回歸是估計一個連續值&#xff0c;而分類是預測一個離散類別。 2、Softmax回歸模型 Softmax回歸跟線性回歸一樣將輸入特征與權重做線性疊加。與線性回歸…

Linux安裝Nginx并部署Vue項目

今天部署了一個Vue項目到阿里云的云服務器上&#xff0c;現記錄該過程。 1. 修改Vue項目配置 我們去項目中發送axios請求的文件里更改一下后端的接口路由&#xff1a; 2. 執行命令打包 npm run build ### 或者 yarn build 打包成功之后&#xff0c;我們會看到一個dist包&a…

[MySQL]SQL優化之索引的使用規則

&#x1f308;鍵盤敲爛&#xff0c;年薪30萬&#x1f308; 目錄 一、索引失效 &#x1f4d5;最左前綴法則 &#x1f4d5;范圍查詢> &#x1f4d5;索引列運算&#xff0c;索引失效 &#x1f4d5;前模糊匹配 &#x1f4d5;or連接的條件 &#x1f4d5;字符串類型不加 …

110. 平衡二叉樹(Java)

給定一個二叉樹&#xff0c;判斷它是否是高度平衡的二叉樹。 本題中&#xff0c;一棵高度平衡二叉樹定義為&#xff1a; 一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1 。 示例 1&#xff1a; 輸入&#xff1a;root [3,9,20,null,null,15,7] 輸出&#xff1a;t…

如何通過SPI控制Peregrine的數控衰減器

概要 Peregrine的數控衰減器PE4312是6位射頻數字步進衰減器(DSA,Digital Step Attenuator)工作頻率覆蓋1MHz~4GHz,插入損耗2dB左右,衰減步進0.5dB,最大衰減量為31.5dB,高達59dBm的IIP3提供了良好的動態性能,切換時間0.5微秒,供電電源2.3V~5.5V,邏輯控制兼容1.8V,20…

?如何使用https://www.krea.ai/來實現文生圖,圖生圖,

網址&#xff1a;https://www.krea.ai/apps/image/realtime Krea.ai 是一個強大的人工智能藝術生成器&#xff0c;可用于創建各種創意內容。它可以用來生成文本描述的圖像、將圖像轉換為其他圖像&#xff0c;甚至寫博客文章。 文本描述生成圖像 要使用 Krea.ai 生成文本描述…

設計模式——建造者模式(Java示例)

引言 生成器是一種創建型設計模式&#xff0c; 使你能夠分步驟創建復雜對象。 與其他創建型模式不同&#xff0c; 生成器不要求產品擁有通用接口。 這使得用相同的創建過程生成不同的產品成為可能。 復雜度&#xff1a; 中等 流行度&#xff1a; 流行 使用示例&#xff1a…

【conda】利用Conda創建虛擬環境,Pytorch各版本安裝教程(Ubuntu)

TOC conda 系列&#xff1a; 1. conda指令教程 2. 利用Conda創建虛擬環境&#xff0c;安裝Pytorch各版本教程(Ubuntu) 1. 利用Conda創建虛擬環境 nolonolo:~/sun/SplaTAM$ conda create -n splatam python3.10查看結果&#xff1a; (splatam) nolonolo:~/sun/SplaTAM$ cond…

Java 中的 Deque 接口及其用途

文章目錄 Deque 介紹Deque 使用雙端隊列普通隊列棧 總結 在 Java 中&#xff0c;Deque 接口是一個雙端隊列&#xff08;double-ended queue&#xff09;的數據結構&#xff0c;它支持在兩端插入和移除元素。Deque 是 “Double Ended Queue” 的縮寫&#xff0c;而且它可以同時充…

Linux系統編程(一):基本概念

參考引用 Unix和Linux操作系統有什么區別&#xff1f;一文帶你徹底搞懂posix Linux系統編程&#xff08;文章鏈接匯總&#xff09; 1. Unix 和 Linux 1.1 Unix Unix 操作系統誕生于 1969 年&#xff0c;貝爾實驗室發布了一個用 C 語言編寫的名為「Unix」的操作系統&#xff0…

【基于LSTM的電商評論情感分析:Flask與Sklearn的完美結合】

基于LSTM的電商評論情感分析&#xff1a;Flask與Sklearn的完美結合 引言數據集與爬取數據處理與可視化情感分析模型構建Flask應用搭建詞云展示創新點結論 引言 在當今數字化時代&#xff0c;電商平臺上涌現出大量的用戶評論數據。了解和分析這些評論對于企業改進產品、服務以及…

?expect命令運用于bash?

目錄 ?expect命令運用于bash? expect使用原理 expet使用場景 常用的expect命令選項 Expect腳本的結尾 常用的expect命令選參數 Expect執行方式 單一分支語法 多分支模式語法第一種 多分支模式語法第二種 在shell 中嵌套expect Shell Here Document&#xff08;內…

基于Java實驗室管理系統

基于Java實驗室管理系統 功能需求 1、實驗室設備管理&#xff1a;系統需要提供實驗室設備管理功能&#xff0c;包括設備的查詢、預訂、使用記錄、維護和報廢等。 2、實驗項目管理&#xff1a;系統需要提供實驗項目管理功能&#xff0c;包括項目的創建、審批、執行和驗收等&a…

以太坊:前世今生與未來

一、引言 以太坊&#xff0c;這個在區塊鏈領域大放異彩的名字&#xff0c;似乎已經成為了去中心化應用&#xff08;DApps&#xff09;的代名詞。從初期的萌芽到如今的繁榮發展&#xff0c;以太坊經歷了一段曲折而精彩的旅程。讓我們一起回顧一下以太坊的前世今生&#xff0c;以…

樹實驗代碼

哈夫曼樹 #include <stdio.h> #include <stdlib.h> #define MAXLEN 100typedef struct {int weight;int lchild, rchild, parent; } HTNode;typedef HTNode HT[MAXLEN]; int n;void CreatHFMT(HT T); void InitHFMT(HT T); void InputWeight(HT T); void SelectMi…

【算法專題】分治 - 快速排序

分治 - 快速排序 分治 - 快速排序1. 顏色分類2. 排序數組(快速排序)3. 數組中的第K個最大元素4. 庫存管理Ⅲ5. 排序數組(歸并排序)6. 交易逆序對的總數7. 計算右側小于當前元素的個數8. 翻轉對 分治 - 快速排序 1. 顏色分類 做題鏈接 -> Leetcode -75.顏色分類 題目&…

【華為數據之道學習筆記】3-5 規則數據治理

在業務規則管理方面&#xff0c;華為經常面對“各種業務場景業務規則不同&#xff0c;記不住&#xff0c;找不到”“大量規則在政策、流程等文件中承載&#xff0c;難以遵守”“各國規則均不同&#xff0c;IT能否一國一策、快速上線”等問題。 規則數據是結構化描述業務規則變量…