matlab中随机信号的产生

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Matlab 中随机信号的产生

在matlab 编程中,我们所能用到的用于产生随机信号的函数有三:Rand, randn,randi 下面我们详细的了解一下这三个函数。

1. Rand 功能是生产均匀分布的伪随机数,并且所生成的伪随机数分布在(0-1); 主要语法:rand (m ,n )生成m 行n 列的均匀分布的伪随机数

Rand (m,n.’double’)生成制定精度的均匀分布的伪随机数,参数还可以是’single’; Rand(randStream,m,n)利用指定的randStream 生成伪随机数

2. Randn 生成标注正态分布的伪随机数(均值为0,方差为1) 语法同上;

3. Randi 生成均匀分布的伪随机整数

主要语法:randi(iMax)在开区间(0,iMax )生成均匀分布的伪随机整数

Randi(iMax,m,n) 在开区间(0,iMax )生成m ×n 型随机矩阵

r= randi([iMin,iMax],m,n)在开区间(iMin,iMax )生成m ×n 型随机矩阵 下面我们来看看具体的例子:

1,Rand

散点图:xh=rand(1,2500);

plot(xh)

概率分布图:xh=rand(1,25000);

hist(xh,2000)

00.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

2,Randn

散点图:xh=randn(1,400000);

plot(xh)

概率分布图:xh=randn(1,400000);

hist(xh,2000)

00.51 1.52 2.53 3.5

4x 105-5-4

-3

-2

-1

1

2

3

4

5

3,Randi

散点图:r= randi([12,214],1,144);

plot(r)

概率分布图:r= randi([12,214],1,144);

hist(r,10000)

对于随机种子,伪随机数的重复生成,在正常情况下每次调用相同指令生成的伪随机数是不同的

例如:rand(1,4)

rand(1,4)

输出结果为:ans = 0.0428 0.2402 0.0296 0.0398

ans = 0.7753 0.4687 0.3378 0.0074

在一些特殊的情况下我们会用到相等的随机数,那我们该如何呢使两个语句生成的随机数相等呢?在Matlab中rand 、randn,和randi 从一个基础的随机数流中得到随机数,叫做默认流。我们可以通

过@RandStream类得到默认流的句柄从而控制随机数的生成。

state属性是发生器的内部状态,我们可以保存默认流的状态:

myState=defaultStream.State;

利用myState我们可以恢复默认流状态重新生成前面的结果:

myState=defaultStream.State;

A=rand(1,100);

defaultStream.State=myState;

B=rand(1,100);

isequal(A,B)

ans = 1

我们也可以直接使用@RandStream类的reset静态方法重置种子状态来获取相同的随机生成序列,下面是示例代码:

stream = RandStream.getDefaultStream;%获取默认的随机种子

reset(stream);%重置

rand(stream,1,3)

reset(stream);%重置

rand(stream,1,3)

matlab的输出为:

ans = 0.814723686393179 0.905791937075619 0.126986816293506

ans = 0.814723686393179 0.905791937075619 0.126986816293506

可以看出生成的随机码是相等的,这样可以用于重复实验

相关文档
最新文档