MATLAB | 对随机信号进行统计分析,绘制频次直方图、频率分布图,与理论概率密度进行比较

一、问题描述

对于一个随机信号,我们可以通过统计手段,得到其的频次分布图(直方图),并由此计算出它的频率分布图。当观察次数区域无穷大时,频率分布图近似于概率密度函数。
下面我们以稳定分布的随机变量为例,来对其进行分析,分析其频次直方图、频率分布图,并与理论概率密度进行比较。

二、解决思路

(1)生成随机变量。使用makedist()函数创建一个概率分布对象,在此基础上,使用random()函数生成随机变量。
(2)绘制直方图。histogram()函数被使用来绘制频次分布图。
(3)将直方图的频次分布转换为频率分布图。频次除以观测次数得到区间频率,再除以区间长度即可得到频率分布图。
(4)使用pdf()函数绘制理论的概率密度函数。

三、实验代码

close all;clc;clear all;

%% 参数设置

SigLength = 5e7; % 信号长度

% 稳定分布噪声参数
alpha = 1.5;
beta = 0;
gamma = 1;
miu = 0;

%% 信号生成

pd1 = makedist('Stable','alpha',alpha,'beta',beta,'gam',gamma,'delta',miu); % 产生对称α稳定分布
noise = random(pd1,[SigLength,1]); % 依据对象生成随机变量

% noise2 = random('Stable',alpha,beta,gamma,miu,[SigLength,1]); % 方法二

%% 统计直方图

h1 = histogram(noise); % 作出直方图,其中BinEdges是横坐标,Values是出现次数(频数)
title('频次直方图');
xlim([-10,10]);
% hold on;

nbins = h1.NumBins; % 获取直方图的分组数
x1 = zeros(nbins,1); 

% 将histogram估计的结果转换为频率图(将频次图转换为频率图)
for ii = 1:nbins
    x1(ii,1) = transpose(0.5*(h1.BinEdges(ii) + h1.BinEdges(ii+1))); % 取区间中点
end
IntervalLength = h1.BinEdges(nbins) - h1.BinEdges(1); % 数据区间总长度
IntervalPerLength = IntervalLength/nbins; % 每个区间长度
z1 = transpose(h1.Values/SigLength/IntervalPerLength); % 重点,这是由频次直方图画概率密度的近似

%% 计算理论PDF

pdf1 = pdf(pd1,x1);

%% 作图

figure;
plot(noise);
title('噪声');

figure;
plot(x1,pdf1);
title('理论的PDF');
xlim([-10,10]);

figure;
plot(x1,z1,'o');hold on;
plot(x1,pdf1);hold on;
xlim([-10,10]);
legend('直方图估计','理论的PDF');

四、实验结果

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来回答你的问题。首先,我们需要明确一下频率分布直方图和边际密度函数图的概念。 频率分布直方图是一种用于展示数据分布情况的图表,它将数据分成若干个区间,并用矩形条表示每个区间中数据的频率或数量。一般情况下,我们可以通过统计数据的频数或频率绘制频率分布直方图。 而边际密度函数图则是一种用于展示数据概率密度分布情况的图表,它通过在一定区间内的概率密度来描述数据分布情况。在Matlab中,我们可以使用“histogram”函数来绘制频率分布直方图,使用“ksdensity”函数来绘制边际密度函数图。 下面是一个简单的示例代码,展示如何在Matlab绘制频率分布直方图和边际密度函数图: ```matlab % 生成随机数据 data = randn(1000,1); % 绘制频率分布直方图 figure; histogram(data,'Normalization','probability'); title('Frequency distribution histogram'); % 绘制边际密度函数图 figure; ksdensity(data); title('Marginal density function'); ``` 在这个例子中,我们生成了一个包含1000个随机数的数据集,并使用“histogram”函数绘制了它的频率分布直方图。我们使用了“Normalization”参数来将频率转换为概率。另外,我们还使用了“title”函数来为图表添加标题。 接着,我们使用“ksdensity”函数绘制了数据的边际密度函数图。同样地,我们也为图表添加了标题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值