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编程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)