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)
10.90.80.70.60.50.40.30.20.1005001000150020002500
概率分布图:xh=rand(1,25000);
hist(xh,2000)
30252015105000.10.20.30.40.50.60.70.80.91
2,Randn
散点图:xh=randn(1,400000);
plot(xh)
543210-1-2-3-4-500.511.522.533.5x 1045
概率分布图:xh=randn(1,400000);
hist(xh,2000)
9008007006005004003002001000-6-4-20246
3,Randi
散点图:r= randi([12,214],1,144);
plot(r)
250200150100500050100150
概率分布图:r= randi([12,214],1,144);
hist(r,10000)
43.532.521.510.50050100150200250
对于随机种子,伪随机数的重复生成,在正常情况下每次调用相同指令生成的伪随机数是不同的 例如: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 可以看出生成的随机码是相等的,这样可以用于重复实验
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库matlab中随机信号的产生在线全文阅读。
相关推荐: