在matlab中进行仿真时,经常需要对真实数据添加随机数噪声。本文内容参考内容见文末,对其进行适当总结并不定期再补充。

文章目录

  • rand
  • randn
  • randi
  • 设定种子1
  • 设定种子2
  • normrnd
  • randperm
  • 随机数对称矩阵

rand

  • rand(m,n):产生均值为0.5、幅度在0~1之间的m×nm\times nm×n均匀分布伪随机数矩阵。
  • rand(m,n,‘double’):生成指定double精度的均值为0.5、幅度在0~1之间的m×nm\times nm×n伪随机数矩阵,可选single。

randn

  • randn(m,n):生成标准正态分布的伪随机数(均值为0,方差为1),语法与rand一致。
  • 若要生成均值p, 方差q的正态分布随机数序列x:
x = p +sqrt(q)*randn(m,n)

randi

  • randi 生成均匀分布的伪随机整数
  • randi(iMax)在开区间(0,iMax)生成均匀分布的伪随机整数
  • randi(iMax,m,n)在开区间(0,iMax)生成mXn型随机矩阵
  • randi([iMin,iMax],m,n)在开区间(iMin,iMax)生成mXn型随机矩阵

设定种子1

matlab的rand、randn、randi函数生的是伪随机数,即由种子递推出来的,相同的种子,生成相同的随机数。
如果需要多次运行生成相同的随机数,用

rand(‘state’,S)设定种子,S种子,最简单的设为0就好
例:

设定种子2

第二种设定种子的方法靠程序的逻辑控制,matlab代码如下

clc
clear
%% 仿真数据准备
% 判断是否存在仿真数据?导入:生成
strDataName = 'myData.mat';
if exist(strDataName,'file')==2load(strDataName);
end
if exist(strDataName,'file')==0A = rand(5,5);save(strDataName)
end
%% 算法实现
% :) @*%#!$*%#......

normrnd

  • R = normrnd(MU,SIGMA,M,N):产生均值为MU,方差为SIGMA,大小为M×NM\times NM×N的正太分布的随机数矩阵

randperm

  • randperm(n) : 产生1到n的均匀分布的随机整数序列
    注:可以用于打乱序列

随机数对称矩阵

仿真时偶尔需要用到对称的随机矩阵,生成方法如下:

  • 对于任何方阵X,X+XT是对称矩阵

例:

A = rand(3)
C=(A'+A)/2.0; % 除以2.0是为了保持随机数的统计特性不变

输出得到:

A =0.9797    0.8757    0.01180.2714    0.7373    0.89390.2523    0.1365    0.1991

本文参考:
【1】https://blog.csdn.net/linhd1102/article/details/51193793
【2】https://wenku.baidu.com/view/6500290d4a7302768e9939f2.html

轮子——matlab中的随机数矩阵(rand randn randi 种子 normrnd randperm 对称)相关推荐

  1. matlab生成随机数的rand、randi和randn三种形式

    matlab中关于随机数的产生有3种库函数,下面我们来看看它们的形式: 1.rand(-) 它是生成0~1之间(开环,不包含0和1两个数)均匀分布的伪随机数,也就是无穷次试验其中每个数产生的概率是一样 ...

  2. 【matlab】随机函数生成随机排列:rand,randn,randi,randperm,randint

    1.rand() rand(n):生成0到1的均匀分布的n×n的随机数方阵 rand(m,n):生成0到1的m行n列的随机数矩阵 2.randn() randn(n)和randn(m,n)产生均值为0 ...

  3. Matlab 没有 randint,Matlab_learning_4(rand randn randint函数 )

    ||matlab 中 rand 函数是产生0到1的随机分布 1>.RAND:Uniformly distributed random numbers. 标准化分布的随机数 2>.RAND( ...

  4. MATLAB中的随机数

    MATLAB中的随机数真的把我搞烦了,索性就系统整理下 randi : 产生均匀分布的伪随机整数 %产生一个1至10之间的随机矩阵,大小为2x5: s1 = randi(10,2,5); rand: ...

  5. Matlab中创建一个矩阵的3种常用方法

    Matlab中创建一个矩阵的3种常用 方法: 1. 直接法: A=[1 2 3;4 5 6]或A=[1,2,3;4,5,6]. 以上需 注意两点,第一,矩阵a大小不用提前设定,Matlab根据后边矩阵 ...

  6. MATLAB中判断一个矩阵或者数字是否是复数

    假设变量为a,使用以下语句进行判断: 参考链接:MATLAB中判断一个矩阵或者数字是否是复数 if ~isreal(a)

  7. MATLAB中的复杂矩阵输入问题

    MATLAB中的复杂矩阵输入问题 #如图矩阵 如何在MATLAB中输入,作为一个初入matlab的萌新...真的难到了诶 ZHO G

  8. matlab超出所有矩阵维度,matlab中索引超出矩阵维度

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:matlab中索引超出矩阵维度?回答:beta=4; % beta 是一个常量 beta(alpha,beta) % beta 不是 ...

  9. matlab怎么扩展矩阵,Matlab中如何扩展矩阵,其他部分补零?

    一.使用官方命令 blkdiag 在matlab中搜索:help blkdiag 下面是其官方事例: Construct block diagonal matrix from input argume ...

最新文章

  1. MySql错误处理(三)- 错误处理的例子
  2. 第十章 动态选路协议
  3. iOS 技术官方 QA
  4. 银行业务队列简单模拟(队列queue)
  5. 关于Keil4 转到 Keil5以后的一些错误解决
  6. 手机不用了,如何消除里面的数据和信息而又不被人可以恢复?
  7. matlab exe mingw,matlab笔记:安装MinGW编译器
  8. Sql Server函数全解(五)之系统函数
  9. MySQL二进制包安装简略过程
  10. 1-1 二进制/源码/zip安装和升级
  11. 【C/C++ 】C++库类大全
  12. Linux系统下公式编辑器KLatexFormula
  13. Flutter实现app自动升级
  14. Itext设置页眉页脚、表头划线、水印、条形码、二维码
  15. 关于液晶触摸屏的信号传递?
  16. 线上故障之-内存问题
  17. 中断驱动的自行车码表
  18. javaweb学习(5)--Cookie
  19. 【C++】字符串子串的系列问题
  20. Unity3D专区Unity实现加载场景进度条

热门文章

  1. AI之AutoML:Ludwig(无需编写代码/易于使用的界面和可视化自动机器学习工具)的简介、安装、使用方法之详细攻略
  2. 【JAVASE】正则表达式
  3. android 百度地图api之旅(1)环境搭配
  4. 使用计算机也要遵守规范教学反思,珍爱生命遵守规则教学反思
  5. 跨频率耦合:连接架构、机制和功能
  6. 数据库查询尚未归还的借书记录(查询借书但未归还的读者的编号、姓名及所借图书编号、
  7. python递归算法——斐波那契数列
  8. Memento 备忘录
  9. 【SequoiaDB|巨杉数据库】索引文件
  10. C语言编程题——猜凶手