MATLAB之相关函数
生活随笔
收集整理的這篇文章主要介紹了
MATLAB之相关函数
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 相關函數(shù)
- 已知平穩(wěn)隨機過程的功率譜,求自相關函數(shù)
相關函數(shù)
% 功能: % 1.導入txt格式的兩信號, % 2.求其各自的自相關函數(shù)Rxx,自協(xié)方差函數(shù)Cxx,自相關系數(shù)/歸一化自協(xié)方差函數(shù) % 3.求兩信號的互相關函數(shù)Rxy,互協(xié)方差函數(shù)Cxy,,互相關系數(shù)/歸一化互協(xié)方差函數(shù),延時tao % 4.求信號的功率(求均方值,或者自相關函數(shù)(延時tao=0),自功率譜的IFFT(延時tao=0,注意區(qū)別雙邊譜和單邊譜))% 各物理意義如下: % 自相關函數(shù)Rxx:反映了噪聲x(t)在不同時刻t1,t2取值的相關程度 % 延時為0時的R值(最大值)= 均方值,反映了隨機噪聲的平均功率(直流分量功率+交流分量功率) % 延時為無窮大時的R值 = 均值^2, 反映了隨機噪聲的直流分量的功率% 歸一化相關函數(shù):也反映了噪聲x(t)在不同時刻t1,t2取值的相關程度, % 但消除了隨機噪聲的幅度和功率的影響,更準確反映相關程度 % 歸一化自相關函數(shù) = Rxx/Rxx(0) = Rxx/max(Rxx) = Rxx/ ((1/length(x))*sum(x.^2)); % ='coeff' % 歸一化互相關函數(shù) = Rxy/sqrt(Rxx(0).*Ryy(0)) = Rxy/sqrt(max(Rxx).*max(Ryy(0))) % ='coeff' % 注意:均方值因為除了個N,所以對應的是biased,注意對應關系% 自協(xié)方差函數(shù)Cxx :反映了同一隨機噪聲x(t)的交流分量在不同時刻t1,t2取值的相關程度 % Cxx = Rxx-(mean(x))^2 % 互協(xié)方差函數(shù)Cxy:反映了兩隨機噪聲x(t)的交流分量在不同時刻t1,t2取值的相關程度 % Cxx = Rxy-mean(x)*mean(y)% 歸一化自協(xié)方差函數(shù)Cxx_nom = Cxx./var(x) % 歸一化互協(xié)方差函數(shù)Cxy_nom = Cxy./(sqrt(var(x)).*sqrt(var(y)))% 編輯者:lily % 日期:2019,4,13clc; clear; close all; % =========== input signal ========================== Fs = 12000; x = load('err mic1 - off.txt'); y = load('err mic2 - off.txt'); % =============== AutoCorr/CrossCorr =============================== % N :累加平均次數(shù) % m :延時序號 % 'biased':有偏估計,將'none'/(N) % 'unbiased':無偏估計,將'none'/(N-|m|) % 'coeff':將'none' 作歸一化處理,除以最大值。 % Rxx_max: m = 0時的值,也是均方值 ( Rxx_max = Rxx(0) ) % Rxy_max: 兩信號m = 0的自相關函數(shù)相乘,再開根號。( Rxy_max = sqrt(Rxx(0)*Ryy(0)) ) % 'none':不作歸一化處理% biased雖是有偏估計,但漸近一致估計,估計量的方差小于無偏估計,實際中多用有偏估計 % 歸一化相關函數(shù) = 用'none'先計算,再求歸一化 = 'coeff' str = {'biased','unbiased','coeff','none'}; ind = 1; [Rxy, c] = xcorr(x, y, str{ind}); [Ryy, d] = xcorr(y, y, str{ind}); [Rxx, b] = xcorr(x, x, str{ind}); tao = b/Fs; %tao: 偏移的時間,用偏移個數(shù)乘采樣間隔 % =============== figure =============================== figure; plot(tao, Rxx); title(str{ind}); grid;figure; plot(tao, Rxy); title(str{ind}) grid; % ===============求延時 =====================================[~,indexMax] = max(Rxx);disp(['Time lag = ' num2str(tao(indexMax))])% ============= 歸一化自相關函數(shù)rho_xx ============================== rho_xx = Rxx./max(Rxx) ; rho_xxx = Rxx./ ((1/length(x))*sum(x.^2)); figure; plot(rho_xx); hold on; plot(rho_xxx); legend('用最大值算','用均方值算'); title('歸一化自相關函數(shù)rho_xx ');% =============== 歸一化互相關函數(shù)rho_xy ================================= rho_xy = Rxy/sqrt(max(Rxx).*max(Ryy)); figure; plot(rho_xy); title('歸一化互相關函數(shù)rho_xy ');% =============== 自協(xié)方差函數(shù)Cxx =============================== Cxx = Rxx-(mean(x))^2; figure; plot(tao, Cxx); title('自協(xié)方差函數(shù)Cxx') grid;% =============== 互協(xié)方差函數(shù)Cxy =============================== Cxy = Rxy-mean(x)*mean(y); figure; plot(tao, Cxy); title('互協(xié)方差函數(shù)Cxy ') grid; % =========== 歸一化自協(xié)方差函數(shù)Cxx_nom ============================ Cxx_nom = Cxx./var(x); figure; plot(tao,Cxx_nom); title('歸一化自協(xié)方差函數(shù)Cxx_nom') grid;% ============ 歸一化互協(xié)方差函數(shù)Cxy_nom============================= Cxy_nom = Cxy./(sqrt(var(x)).*sqrt(var(y))); figure; plot(tao,Cxy_nom); title('歸一化互協(xié)方差函數(shù)Cxy_nom') grid;已知平穩(wěn)隨機過程的功率譜,求自相關函數(shù)
% 功能:已知平穩(wěn)隨機過程的功率譜,求自相關函數(shù) % 平穩(wěn)隨機過程的功率譜連續(xù)時間表達形式:Fw = 2*pi* dirac(w); % 驗證頻域為1的ifourier是單位沖擊函數(shù)。% 編輯者:lily % 日期:2019,4,18clear; clc; close all; % ======================= input signal ========================== syms w t %定義一個符號變量x, 后續(xù)可以做一些符號操作 Fw = 2*pi* dirac(w); ft = ifourier(Fw,w,t); pretty(ft); % 表達式的形式總結
以上是生活随笔為你收集整理的MATLAB之相关函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MATLAB之GUI学习经典举例
- 下一篇: 傅里叶级数FS, 离散傅里叶变换DFT