• Matlab中rand、randn、randi、rands的区别以及用randn生成白噪声的示例


    2020-05-30 20:42:05

    Matlab中生成随机数的函数有多个:rand、randn、randi、rands,其简要说明和区别如下:


    rand(m,n)                        : 在 ( 0~1 ) 内生成m行n列均匀分布的伪随机数矩阵;
    randn (m,n)                     : 生成m行n列标准正态分布 ( 均值为0,方差为1 ) 的伪随机数矩阵;
    rands(m,n)                      : 在 ( -1~1 ) 内生成m行n列均匀分布的伪随机数;
    randi( [min,max] , m , n) : 在 [min,max] 内生成m行n列的均匀分布的随机整数矩阵;

    下面重点讨论randn函数:

    randn用法详细说明:

    x = randn——返回一个伪随机数x,其值来自于均值为0,标准差为1的正态分布;

    x = randn(n)——返回一个n x n的矩阵,其元素值来自于均值为0,标准差为1的正态分布;

    x = rand( m ,n ) 或 x = x = rand( [m ,n] ),——返回一个 m x n的矩阵,其元素值来自于均值为0,标准差为1的正态分布。

    在音频算法测试中,常常要用到白噪声(例如给纯净音频叠加白噪声等),由于白噪声的定义和特性:

    白噪声一种功率谱密度为常数的随机信号,换言之,白噪声在各个频段上的功率相等(若不满足以上条件,则不是白噪声,而被称为“有色噪声”),百度百科:白噪声

    因此,由于白噪声的功率谱是正态分布的,所以要用randn来生成白噪声,Matlab中生成幅值为0~1的白噪声的代码如下:

    1 noise_white=randn(1,wav_len);                     % 生成长度为wav_len的白噪声,满足正态分布;
    2 noise_white=noise_white/max(abs(noise_white));    % 白噪声信号幅度归一化,此处白噪声幅值范围:0~1;
  • 相关阅读:
    RavenScheme简介
    我终于理解了LISP『代码即数据|数据即代码』的含义
    汉编随想(一)
    SICP的一些练习题
    linux下Script小计
    vscode小计
    软硬连接区别
    find过滤大小执行操作
    pyqt5和qt designer安装
    pyenv和virtualenv结合使用管理多python环境
  • 原文地址:https://www.cnblogs.com/CCWangsj/p/12994809.html
Copyright © 2020-2023  润新知