我是靠谱客的博主 美满外套,最近开发中收集的这篇文章主要介绍轮子——matlab中的随机数矩阵(rand randn randi 种子 normrnd randperm 对称),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

文章目录

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

rand

  • rand(m,n):产生均值为0.5、幅度在0~1之间的 m × n mtimes n m×n均匀分布伪随机数矩阵。
  • rand(m,n,‘double’):生成指定double精度的均值为0.5、幅度在0~1之间的 m × n mtimes n m×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')==2
    load(strDataName);
end
if exist(strDataName,'file')==0
    A = rand(5,5);
    save(strDataName)
end
%% 算法实现
% :) @*%#!$*%#......

normrnd

  • R = normrnd(MU,SIGMA,M,N):产生均值为MU,方差为SIGMA,大小为 M × N Mtimes N M×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.0118
    0.2714    0.7373    0.8939
    0.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 对称)的全部内容,希望文章能够帮你解决轮子——matlab中的随机数矩阵(rand randn randi 种子 normrnd randperm 对称)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部