matlab中随机信号的产⽣
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我们可以恢复默认流状态重新⽣成前⾯的结果:matlab生成随机数
myState=defaultStream.State;
A=rand(1,100);
defaultStream.State=myState;
B=rand(1,100);
isequal(A,B)
ans = 1
我们也可以直接使⽤@RandStream类的reset静态⽅法重置种⼦状态来获取相同的随机⽣成序列,下⾯是⽰例代码:
stream = DefaultStream;%获取默认的随机种⼦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可以看出⽣成的随机码是相等的,这样可以⽤于重复实验
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论