统计、概率和噪声MATLAB图解

均值和方差

均值


方差


MATLAB自带的var和std也是如此定义方差和标准差的,注意是除以N-1而不是N!

如下图生成一个1000点的rand数:


其均值和方差分别为0.4954和0.2843。

在信号处理中,均值也叫DC值,标准差叫做AC值。而RMS即均方根既测量了DC分量也测量了AC分量。

均方根RMS


上图中的RMS=0.5711。

一般随机数的峰峰值等于其标准差的6~8倍,从上图中可以验证此种关系。



柱状图,概率质量函数和概率密度函数

下图是8bit ADC结果,共取得了256000个点的信号。第一个图是其中128个sample的图示,其直方图在第二个图中显示。



直方图显示了每个值出现的次数。直方图中所有值的和等于输入数据sample的点数。上图不够平滑,当所有256000个点都用于计算直方图时如下所示:


直方图根据获取的信号得到的,而概率质量函数pmf是直方图潜在蕴含的过程表示。直方图一般都由有限数据获取,而pmf可能有无限信号得到,pmf可以由直方图来估计或者数学技巧推导而来。

pmf的纵轴与直方图不同的是其为分数表示。即出现次数除以总次数。因此代表某个值出现的概率。直方图和pmf都是用于离散信号的表示,作为对应的是,pdf即概率密度函数用来对模拟信号进行表示。



需要注意的是概率密度,其概率的计算是某一范围的,例如120~121之间概率密度为0.03,则其概率为(121-120)*0.03=0.03。如果在某范围内不是恒定值,那这个过程就是积分。从-∞到+∞概率密度的积分为1。

下图给出了几个常见的波形的概率密度函数曲线:


当信号可能取的值远大于信号点数时计算直方图会有问题,这种情况很容易在浮点表示时发生。例如,整数表示可能取值3或4,而浮点表示在3和4之间可能有数以百万计的数存在。

解决这一问题的方法是binning。即随机选取直方图的长度。例如选为1000点,这些选取的点叫做bins。这些bin代表的是某个范围内的数据。选择bins个数是在横轴和纵轴分辨率之间做折中。


正态分布
均值为0,方差为1的正态分布:

由于pdf的积分信号在某个范围的概率。而正太分布pdf的积分叫做累计分布函数cdf。

数字噪声的产生
数字噪声产生的核心是随机数的产生。

10000000点随机数用ksdensity概率密度估计来计算概率密度然后画出如下。0~1均匀分布。

两个10000000点随机数相加,三角分布。

12个10000000点随机数相加,正态分布。



以上算法的数学基础是中心极限定理。其简单描述是很多随机数相加变为正态分布,无论这些随机数服从什么分布。中心极限定理也说明了为何正态分布如此广泛。
另一种生成正态分布的方法:

随机数的产生都是由一个种子seed开始,先产生一个0~1之间的数,然后经过定点化算法,产生另外一个0~1之间的数,新的数就是随机数并且存在内部作为下一次随机数的产生。

你可以将最初的seed设置为相同,这样每次产生相同的随机数,这样一般用在程序debug中。如果要产生真正的随机数一般将根据时间产生。随机数一般叫伪随机因为产生的随机数都是根据之前的数。



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像的噪声统计特性可以通过 MATLAB 中的一些函数进行分析,具体步骤如下: 1. 读取图像:使用 `imread` 函数读取需要分析的图像,例如读取名为 `lena.png` 的图像。 ``` I = imread('lena.png'); ``` 2. 添加噪声:使用 `imnoise` 函数向图像中添加噪声,例如添加高斯噪声。 ``` J = imnoise(I, 'gaussian', 0, 0.01); ``` 3. 分析噪声统计特性:使用 MATLAB 中的一些函数分析图像的噪声统计特性,例如分析图像的均值、方差、标准差等。 ``` mean_I = mean2(I); mean_J = mean2(J); var_I = var(double(I(:))); var_J = var(double(J(:))); std_I = std2(I); std_J = std2(J); ``` 以上代码分别计算了原始图像 `I` 和添加噪声后的图像 `J` 的均值、方差、标准差。 4. 显示结果:使用 `imshow` 函数显示原始图像和添加噪声后的图像,并在图像上添加文字显示分析结果。 ``` figure; subplot(2,2,1); imshow(I); title('Original Image'); text(10, 20, ['Mean: ', num2str(mean_I)]); text(10, 40, ['Variance: ', num2str(var_I)]); text(10, 60, ['Standard Deviation: ', num2str(std_I)]); subplot(2,2,2); imshow(J); title('Noisy Image'); text(10, 20, ['Mean: ', num2str(mean_J)]); text(10, 40, ['Variance: ', num2str(var_J)]); text(10, 60, ['Standard Deviation: ', num2str(std_J)]); ``` 以上代码将原始图像和添加噪声后的图像分别显示在一个 2x2 的子图中,并在图像上添加文字显示分析结果。 完整的 MATLAB 代码如下: ``` I = imread('lena.png'); J = imnoise(I, 'gaussian', 0, 0.01); mean_I = mean2(I); mean_J = mean2(J); var_I = var(double(I(:))); var_J = var(double(J(:))); std_I = std2(I); std_J = std2(J); figure; subplot(2,2,1); imshow(I); title('Original Image'); text(10, 20, ['Mean: ', num2str(mean_I)]); text(10, 40, ['Variance: ', num2str(var_I)]); text(10, 60, ['Standard Deviation: ', num2str(std_I)]); subplot(2,2,2); imshow(J); title('Noisy Image'); text(10, 20, ['Mean: ', num2str(mean_J)]); text(10, 40, ['Variance: ', num2str(var_J)]); text(10, 60, ['Standard Deviation: ', num2str(std_J)]); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值