使用matlab求高阶累积量

本文介绍如何使用matlab自带的高阶累积量函数求取一个随机过程的高阶累积量。

同时演示如何使用 matlab 产生一个高斯分布随机序列,以及如何计算一个高斯分布的分布密度函数。

clc
clear all
close all
n = 10000;                                   % 随机数列的元数
u = 6;                                      % 随机序列的均值
a = 3;                                      % 随机序列的均方差

x = random('norm',u,a,1,n);                 % 产生一个1*200大小的均值为3,方差0.5的高斯分布随机序列
t = (1-a)*u:0.1:(1+a)*u;
fn = normpdf(t,u,a);                        % 计算均值3,方差0.5的高斯分布密度函数

figure(1)
subplot(3,1,1)
plot(x)                                     % 绘制生成的随机序列x
subplot(3,1,2)
hist(x,20)                                  % 统计生成的随机序列x
xlim([min(t),max(t)])
subplot(3,1,3)
plot(t,fn)                                  % 绘制相应的概率密度曲线
xlim([min(t),max(t)])

% 高阶累积量对高斯随机过程是盲的,故而四阶累积量期望应该是0
xCum4 = cum4est (x, 50, 1000, 50, 'biased', 10, 10);
xCum4Size = size(xCum4)
% y_cum = cum4est (y, maxlag, samp_seg, overlap, flag, k1, k2)  求四阶统计量
% y              : 输入数据向量(列)
% maxlag         : 最大切片数(将频域w分切成不同的子带,完整的频带 = 子带数*2+1)
% 分段求高阶累积量,然后对结果求期望?
% samp _ seg     : 每段样本数
% overlap        : 分段时候,设计重叠部分占每个分段长度的百分比
% flag           : 'biased',计算有偏见的估计
%                : “unbiased”,计算无偏估计。
% k1,k2         : C3 ( m,k1 )或C4 ( m,k1,k2 )中的固定滞后;见下文
% y _ cum        : 估计的四阶累积量切片
% C4 ( m,k1,k2 ) -最大滞后< = m < =最大滞后
% 注意           : 必须指定所有参数

% 二阶累积量对应高斯分布的方差a^2,出现在w=0处,也就是出现在图中横轴的第 maxlag + 1 个点处
xCum2 = cum2est (x, 50, 30, 50, 'unbiased');
xCum2Size = size(xCum2)
% y_cum = cum2est (y, maxlag, nsamp, overlap, flag)
%CUM2EST Covariance function.
%	Should be involed via "CUMEST" for proper parameter checks.
%	y_cum = cum2est (y, maxlag, samp_seg, overlap,  flag)

%	       y: input data vector (column)
%	  maxlag: maximum lag to be computed
%	samp_seg: samples per segment (<=0 means no segmentation)
%	 overlap: percentage overlap of segments
%	    flag: 'biased', biased estimates are computed
%	          'unbiased', unbiased estimates are computed.
%	   y_cum: estimated covariance,
%	          C2(m)  -maxlag <= m <= maxlag
%	all parameters must be specified!

figure(2)
subplot(4,1,2)
plot(xCum2)
subplot(4,1,4)
plot(xCum4)

以下为运行结果

猜你喜欢

转载自blog.csdn.net/ljl86400/article/details/82498284