问题补充说明:我想辨识一个非线性状态方程的参数 需要随机设置一些历史输入输出(矩阵形式) 如何编写
Matlab中Rand函数用法:
一、理论准备
matla360问答b函数randn乙罗:产生均值为0,方差σ^2=1,标准差跟端南很克燃培任最σ=1的正态分布的随机数或矩阵的函数。
用法:Y=randn(n),返回一个n群东局香火志足最伯善*n的随机项的矩阵。如果n不是个数量,将返回错误信息。
Y=randn(m,n)刻面妒概升查左保或Y=randn([mn]),返回一个m*n的随机项矩阵。
Y=randn(m,n,p,...)或Y=randn([实方旧刻mnp...]),产生随难伯含谓急迫合超衡机数组(感觉就是三维数组,请看如下例子)。
1:>>rand(1,2,3)
2:ans(:,:,1)=
3:0.4455862007108990.646313010111265
4:ans(:,:,2)=
5一绿力:0.7093648308580730.754686益河车督风病充究策台山681982361
6:ans(:,:,3)=
7:0.2760250769985780.67970267685刻均各查发但向战屋3675
Y=randn(size(A)),返回一个和A有同样维数大小的随机数组。
randn
s=randn('state'),估计和C++里初始化随机种子一个意思,随便了。
二、举例分析
产生一个随机分布的指定均值和方差的矩室史河没改阵:将randn产生的结果乘以标准差,然后加上期望均值即可。例如,产生均看材利足饭立值为0.6,方差为0.1的一个5*5的随机数方式如下:
者练字龙社源史下站 1:x=.6+sqrt(0.1)*randn(5)
其他类似函数:rand,randperm,sprand,sprandn
三、拓展
用matlab随机产生60个1到365之间的正数1+fix(365*rand(1,60)),fix就是取整函数。
用rand函数随机取100个从标套效言把掉服善帝至均-1到2的数x1,x2,..第全尔皮雷上兴衡架争.,x=rand(1,100)*2-1。
逗号表示行,分号表示列。