MATLAB系统仿真其三:Ornstein-Uhlenbeck(OU)噪声
生活随笔
收集整理的這篇文章主要介紹了
MATLAB系统仿真其三:Ornstein-Uhlenbeck(OU)噪声
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 前言
- 一、Ornstein-Unlenbeck隨機過程
- 二、MATLAB仿真
前言
高斯噪聲、均值噪聲、朗之萬噪聲等噪聲由于過于“離散”,有時候反而帶來了理想與實際的偏差。為了更好解釋市場趨勢等時序相關的隨機過程,人們引入了多種隨機模型和估計方法。Ornstein-Unlenbeck (OU)均值回歸過程由Taylor(1986)和Hull(1987)引入,有興趣深入了解可以閱讀原文。由維納過程驅動的奧恩斯坦-昂倫貝克利率作為單因素短期利率在金融領域被廣泛應用(Kho Chia Chen,2014)。JSV2011年的一篇論文提到在電路系統中也常考慮OU噪聲。一、Ornstein-Unlenbeck隨機過程
考慮一個簡單的自由馬爾代夫過程,讓其受到一個維納過程 Z Z Z的驅動,參考美國伊利諾斯大學高教授的文章,將簡單OU過程定義為:
其中常數 λ > 0 λ>0 λ>0。當然,這個形式不太直觀,也不好處理,寫出其特殊的微分形式:
維納過程的微分形式服從高斯分布,因此可以使用更簡單生成的高斯隨機變量替代,這種形式的方程在MATLAB中求解僅需要幾行代碼。當然,還有分數階自由OU過程以及對OU過程的許多有趣的推論,這里不做過多介紹,有興趣的可以閱讀 Free Ornstein-Uhlenbeck processes 這篇文章。
二、MATLAB仿真
我們常常需要的是均值和方差都很小的噪聲,因此只考慮簡單的OU噪聲即可,MATLAB代碼如下:
tspan = 0:1e-2:50; [t,e]=ode45(@ounoise,tspan,[0]); figure;plot(t,e);xlabel(['OU噪聲,均值:' num2str(mean(e)) ',方差:' num2str(std(e))]); figure;[cor,lag] = xcorr(e,e,'normalized');plot(lag/100,cor); figure;[w,fw] = pwelch(e);plot(fw,w);function dx = ounoise(t,x) tm = 2;%相關時間 deta = pi/2;%標準差 r = 1; dx = -r*x+r*randn(1);%簡單過程 % dx = -1/tm*x+sqrt(2/tm)*deta*randn(1); end則程序結果如圖:
通過時序可以看出,在遵從布朗運動的隨機性的同時,OU噪聲不斷向著x軸振蕩修正,這個過程也叫均值回歸。由于使用的高斯噪聲,因此每次運行的結果略有不同,但是整體分布相似。使用分數階的OU公式時可以通過修改參數控制均值、標準和噪聲的相關時間,當然對上述結果整體加減的改均值也是可行的。OU噪聲的自相關函數并非是單純的沖激函數,但是其功率譜與高斯噪聲相似。
總結
以上是生活随笔為你收集整理的MATLAB系统仿真其三:Ornstein-Uhlenbeck(OU)噪声的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Acm弱校奋斗史
- 下一篇: 【网络相关】curl可以访问浏览器打不开