matlab中随机信号的产生
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
可以看出生成的随机码是相等的,这样可以用于重复实验