如何使用MATLAB产生指数分布的随机数
在matlab中用来产生指数分布随机数的函数是exprnd( );
语法:
1. R=exprnd(MU)
生成服从参数为MU的指数分布随机数。
2. R=exprnd(MU,m)
生成服从参数为MU的指数分布的随机数矩阵,矩阵的形式由m定义。
例如,n=exprnd(5,[1 6])
3. R=exprnd(MU,m,n)
生成m×n形式的指数分布的随机数矩阵。
当产生的数组是一维向量时,若想排序可以利用sort(A)函数,A为随机数组,默认的结果是升序排列。
如果排序后还需要保留原来的索引可以用返回值,即[B,ind]=sort(A),计算后,B是A排序后的向量,A保持不变,ind是B中每一项对应于A 中项的索引。
若想对A数组进行降序排列,先用X=eye(n)生成一个n维的单位阵,然后用X=rot90(X)将其旋转为次对角线的单位阵,再用原来矩阵乘以X即可,如要讲A逆序排列采用如下步骤:
X=eye(size(A));
X=rot90(X);
A=A*X;
指数分布--matlab
函数exprnd( )
功能:生成服从指数分布的随机数
语法:R=exprnd(MU)
R=exprnd(MU,m)
R=exprnd(MU,m,n)
说明:
R=exprnd(MU) 生成服从参数为MU的指数分布的随机数。输入MU与输出
R的形式相同。
R=exprnd(MU,m) 生成服从参数为MU的指数分布的随机数矩阵,矩阵的形式由m定义。m是一个1×2向量,其中的两个元素分别代表返回值R中行与列的维数。
R=exprnd(MU,m,n) 生成m×n形式的指数分布的随机数矩阵。
例:
生成指数分布随机数。
n1=exprnd(5:10)
n1=
4.0076 3.8735 12.3433 16.2809 13.6772 22.4923
n2=exprnd(5:10,[1 6])
n2=
9.7799 4.6988 1.6666 10.1534 13.4334 0.9555
n3=exprnd(5,2,3)
n3=
24.5797 3.0614 5.8008
2.6489 2.1269 7.3233
如何使用matlab拟合指数分布函数
频率直方图我没太用过 但是其他形式的曲线 比如控制领域的时域图用一下方法是可以实现的。
首先:想办法读出样本点,x=(),y=() (在7.0里用小括号就可以了,不同版本可以自行改一下)
之后可参见如下方法,我也是转载ilove.MATLAB论坛上的方法 用过很好用
转载:“在Matlab 6.5以上的环境下,在左下方有一个"Start"按钮,如同Windows的开始菜单,点开它,在目录"Toolboxes"下有一个"Curve Fitting",点开"Curve Fitting Tool",出现数据拟合工具界面,基本上所有的数据拟合和回归分析都可以在这里进行。
下面给你简单介绍一下它的使用方法。
首先在Matlab的命令行输入两个向量,一个向量是你要的x坐标的各个数据,另外一个是你要的y坐标的各个数据。输入以后假定叫x向量与y向量,可以在workspace里面看见这两个向量,要确保这两个向量的元素数一致,如果不一致的话是不能在工具箱里面进行拟合的。
例如在命令行里输入下列数据:
x=(0:0.02:0.98)';
y=sin(4*pi*x+rand(size(x)));
此时x-y之间的函数近似的为正弦关系,频率为2,但是存在一个误差项。
可以通过作图看出它们的大体分布:
plot(x,y,'*','markersize',2);
打开曲线拟合共工具界面,点击最左边的"Data..."按钮,出现一个Data对话框,在Data Sets页面里,在X Data选项中选取x向量,Y Data选项中选取y向量,如果两个向量的元素数相同,那么Create data t按钮就激活了,此时点击它,生成一个数据组,显示在下方Data Sets列表框中。关闭Data对话框。此时Curve Fitting Tool窗口中显示出这一数据组的散点分布图。
点击Fitting...按钮,出现Fitting对话框,Fitting对话框分为两部分,上面为Fit Editor,下面为Table of Fits,有时候窗口界面比较小,Fit Editor部分会被收起来,只要把Table of Fits上方的横条往下拉就可以看见Fit Editor。在Fit Editor里面点击New Fit按钮,此时其下方的各个选框被激活,在Data Set选框中选中刚才建立的x-y数据组,然后在Type of fit选框中选取拟合或回归类型,各个类型的拟合或回归相应的分别是:
Custom Equations 用户自定义函数
Expotential e指数函数
Fourier 傅立叶函数,含有三角函数
Gaussian 正态分布函数,高斯函数
Interpolant 插值函数,含有线性函数,移动平均等类型的拟合
Polynomial 多项式函数
Power 幂函数
Rational 有理函数(不太清楚,没有怎么用过)
Smooth Spline ??(光滑插值或者光滑拟合,不太清楚)
Sum of sin functions正弦函数类
Weibull 威布尔函数(没用过)
不好意思,没有学过数理统计,所以很多东西都是用了才知道,翻译也就不太准确。不过在Type of fit选框下方有一个列表框,基本上各个函数类里的函数都写成解析式列在下方以供选择,所以找合适的函数还是比较容易的。
在这个Type of fit选框中选择好合适的类型,并选好合适的函数形式。于是点击Apply按钮,就开始进行拟合或者回归了。此时在Curve Fitting Tool窗口上就会出现一个拟合的曲线。这就是所要的结果。
在上面的例子中,选择sum of sin functions中的第一个函数形式,点击Apply按钮,就可以看见拟合得到的正弦曲线。
在Fitting对话框中的Results文本框中显示有此次拟合的主要统计信息,主要有
General model of sin1:
....... (函数形式)
Coefficients (with 95% conffidence range) (95%致信区间内的拟合常数)
a1=... ( ... ...) (等号后面是平均值,括号里是范围)
....
Godness of fit: (统计结果)
SSE: ... (方差)
R-squared: ... (决定系数,不知道做什么的)
Adjusted R-squared: ... (校正后的决定系数,如何校正的不得而知)
RMSE: ... (标准差)
上面的例子中经过拟合得到的函数最后为
y=0.9354*sin(12.36x+6.886)
频率为1.98加减0.03,和原来设置的频率为2符合,相对误差为1.5%。
这是曲线拟合工具箱的一个最简单的使用方法,上面还有很多功能,写是写不完的,自己参照这个基本的思路,翻着英汉词典,看着帮助,然后一个按钮一个按钮的试吧。
另外要说的是,如果想把这个拟合的图像导出的话,在Curve Fitting Tool窗口的File菜单下选Print to Figure,此时弹出一个新的图像窗口,里面是你要导出的图像,在这个figure窗口的File菜单里再选Export,选择好合适的格式,一般是jpeg,选择好路径,点击OK就可以了。出来的图像可以在Word等编辑环境中使用,就不多说了。
要修改图像的性质,如数据点的大小、颜色等等的,只需要在对象上点右键,就差不多可以找到了。”
上面所说的X,Y向量就是样本点。
下面是转载的网址,希望有用处http://www.ilovematlab.cn/viewthread.php?tid=28854&extra=&page=1
ilovematlab是个不错的论坛,我也是刚发现,不过帮助很大,基本的问题在那都会有答案。
matlab:采用直接抽样方法产生指数分布的随机数
指数分布的概率密度函数形式为
f(x)= λexp(-λx) (x>0)
0 (x<=0)
其中λ > 0是分布的一个参数
指数分布的累积分布函数
F(x)= 1-exp(-λx) (x>0)
=0 (x<=0)
指数分布的累积分布函数的反函数是
G(y)= -log(1-y)/λ (0<y<1)
使用直接抽取的方法 先产生 [0,1]间的随机数列
利用累积分布函数的反函数,得到的结果就是符合指数分布的序列
N=10000;%产生随机数的个数
lambda=3;%参数λ
y=rand(1,N);%生成N个0,1间均匀分布随机数
x=-log(1-y)/lambda;%生成指数分布随机数
[n,xout]=hist(x,30);%分区间统计随机数出现概率
nn=n/N/mean(diff(xout));
bar(xout,nn,1);holdon;%画图验证随机数是否符合概率密度函数
plot([0xout],lambda*exp(-lambda*([0xout])),'r');holdoff;
xlabel('x');
ylabel('p(x)');
最后加了验证画图的程序,可以检验结果是否符合概率密度分布
怎么创建一个指数均匀分布的向量用matlab?
用matlab怎么创建一个指数均匀分布的向量,可以用exprnd( )函数。该函数使用格式为
r=exprnd(mu,sz1,…,szN)
该命令函数的意思是,从平均mu的指数分布生成一个随机数数组,其中sz1,…,szN表示每个维度的大小。
例如:
r = exprnd(0.1,5,2) %产生mu=0.1时的5行2列的随机数