Matlab产生伪随机序列函数

Matlab产生伪随机序列函数,第1张

rand(n)产生n行n列的0-1之间的伪随机数

rand(m,n)产生m行n列的0-1只见的伪随机数

例如:

>> rand(1)

ans =

09501

>> rand(2,3)

ans =

02311 04860 07621

06068 08913 04565

计算机产生的随机数列都是伪随机数列

都是基于某些算法产生的一系列数

通常新产生一个随机数是由前一个已经生成的数得到的

就是说随机数列的产生就是一个一个数递推的过程

如果第一个数定了,那整个数列就都定下来了,

所以第一个数通常称为种子,seed

通常我们使用随机数的时候,直接就可以用rand

是从系统默认的随机数流中去除若干个数来使用

下次再用的时候,就会接着上次最后一个数继续生成新的随机数

而使用rand('state',key);就相当于固定了使用随机数流的状态

产生的随机数序列就一样了

%a.在MATLAB中产生有限区间上的δ(n)或δ(n-n0);

[d,n]=deltaN(0,-2,2)

n0=4;

[d1,nd]=deltaN(n0,0,8)

%b. 产生两个随机序列:○x1样本为整数,始于-2,结束于7;

%○x2:始于0,结束于15,样本值介于 -2与2之间;

n1=[-2:7];

x1=fix(10rand(1,10))n2=[0:15];

x2=fix(4rand(1,16)-2)%%(2)序列的基本运算

%计算上述两个序列的和,画出柱状图;

%求出 x2(n+3);

%求出 x1(-n);

y=sigadd(x1,n1,x2,n2);

y1=sigshift(x2,0,3)

y2=sigfold(x1,0)%%(3)离散系统的时域分析

%a.单位样值响应,画图与理论值比较(前16个样本);

b=1;

a=[1 -05];

n=0:15;

h=impz(b,a,n);

hk=05^n;subplot(2,1,1);

stem(n,hk);

title('h in theory');subplot(2,1,2);

stem(n,h);

title('h by matlab');

二楼说的有误。rand[X,Y]的参数X,Y是生成一个X乘Y的矩阵,里面都是随机数,范围从0到1(而不是只有0和1!)。这里用[]和()都可以,没有区别的。为了生成“只有0和1”的随机数组需要在rand之外再做处理。

具体方法:

1按照一楼的写法就可以。首先生成随机数,然后判断是否>05,也就是05以下的赋值为0,05以上的赋值为1。

2或者X=ceil(rand(N,1)-05)也可以。ceil命令的意思是“改变值为正向的最近的整数”。

其他详细内容请参见 help rand

Matlab生成符合某种概率分布的序列生成方法 (我不太擅长C语言,simulink还好点,你自己看这个吧),1楼的概率是对了,但是生成的并不是序列,这个我还是看的懂的。

参考地址如下面地址

以上就是关于Matlab产生伪随机序列函数全部的内容,包括:Matlab产生伪随机序列函数、matlab产生伪随机序列的问题、MATLAB编程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10105596.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存