问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在matlab中产生不均匀的随机矩阵

发布网友 发布时间:2022-04-21 00:46

我来回答

3个回答

热心网友 时间:2022-06-16 20:23

s=randn(1,n),n为随机白噪声序列的长度
rand(M,N):产生(0,1)均匀分布的M*N随机数矩阵
如果要产生指定方差和均值的随机数
设某个随机变量x均值为mu,方差为var^2,若要产生同样分布的随机变量y,但使新的随
机变量参数改变,均值为mu_1,方差为var_1^2,可以用如下公式进行变换:
y=var_1/var*(x-mu)+mu_1,其中x为随机变量,其余为常数(原分布参数)。
具体到正态分布,若要产生均值为u,方差为o^2的M*N的随机数矩阵,可以用
y=o*randn(M,N)+u得到。
对于均匀分布,若要产生[a,b]区间的均匀分布的M*N的随机数矩阵,则可以用
y=rand(M,N)*(b-a)+a得到。

热心网友 时间:2022-06-16 20:24

M=10; %产生M行N列的随机数矩阵
N=8;
miu1=1;%第一个分布的参数
sigma1=2;%第一个分布的参数
miu2=6;%第二个分布的参数
sigma2=1;%第二个分布的参数

R = 0.2*normrnd(miu1,sigma1,M,N)+0.8*normrnd(miu2,sigma2,M,N);

单点的概率全是0,那你取出来的随机数算什么?
若干个随机数要满足统计分布,是要按区间统计的
另外我不知道你要做什么就是了。
你如果想按一定的概率密度来产生随机数,你最好用反函数法之类的来弄。

比如产生一个x.^2分布的随机数,不过这些要归一化。

============================================
首先,我知道我的是错的了。如下图就可知
M=1000; %产生M行N列的随机数矩阵
N=1;
miu1=1;%第一个分布的参数
sigma1=2;%第一个分布的参数
miu2=6;%第二个分布的参数
sigma2=1;%第二个分布的参数

R = 0.2*normrnd(miu1,sigma1,M,N)+0.8*normrnd(miu2,sigma2,M,N);

x=-5:0.001:15;
y1=normpdf(x,miu1,sigma1);
y2=normpdf(x,miu2,sigma2);
subplot(2,2,1);
plot(x,y1);
subplot(2,2,2);
plot(x,y2);
subplot(2,2,3);
y3=0.2*y1+0.8*y2;
plot(x,y3);

subplot(2,2,4)
dx=0.5;
xx=-5:dx:15;
yy=hist(R,xx);
yy=yy/M/dx;
plot(x,y3);
hold on
bar(xx,yy)

=======================================
正确做法,我还没弄出来,继续中。。。。

============================================
_____________________新的尝试
下面的结果我觉得可能可以接受。
思路:基于反变换法
Matlab下面有
p=normpdf(x,miu,sigma)是求出x处的概率密度。
p=normcdf(x,miu,sigma)是求出X<x的累积概率密度(就是从负无穷大到x处的概率密度的积分)
我给定一个区间,这个区间外的概率我认为是0(这一点不够严谨,理论上应当是从负无穷到正无穷)
我这里取的是-10:15,其间我取了25000个点,求出这些点的累积概率值(两个的加权和y3),记这个为F(x),根据反变换法,
F(x)=u,其中u是一个0到1的均匀随机数。只要求出它的解x0,那么x0就满足所给定的概率密度分布。这里我用的是插值。用
(y3,x)来插值出u所在的位置

声明,这里有一些地方不够严谨,严谨应当用解析的方法来做反变换。
%%%%%下面是程序

M=1000; %产生M行N列的随机数矩阵
N=1;
miu1=1;%第一个分布的参数
sigma1=2;%第一个分布的参数
miu2=6;%第二个分布的参数
sigma2=1;%第二个分布的参数

x=-10:0.001:15;

y1=normpdf(x,miu1,sigma1);
y2=normpdf(x,miu2,sigma2);
y3=0.2*y1+0.8*y2;

y1=normcdf(x,miu1,sigma1);
y2=normcdf(x,miu2,sigma2);
y=0.2*y1+0.8*y2;
u=rand(N,M);
R=interp1(y,x,u,'linear');

dx=0.5;
xx=-10:dx:15;
yy=hist(R,xx);
yy=yy/M/dx;
bar(xx,yy)

hold on;
plot(x,y3,'r*')

热心网友 时间:2022-06-16 20:24

randsrc(10,10,[0 1;.3 .7])
上面这个是标准的生成离散概率数据的命令,但其实就算不知道这个函数也无妨,可以这样做
rand(10)>.3
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎样移动手机应用的位置 不戴安全套但没有射精会怀孕吗 青岛哪所学校空乘专业就业率高 属牛的是什么星座1985年 m.xzw.com m.xingzuo360.cn 敏卡·凯利基本信息 想问一下eve用什么船刷古斯塔斯怪比较好?如果能有配置图就更好了... EVE加达里恐惧古斯塔斯小型控制塔一个月要多少燃料块 eve古斯塔斯据点需要打建筑么? 对煮饭手艺好的 应该用什么词语修饰 去哪里搜上海中小学教师招聘信息呢,怎么找都找不到呀,大家来帮帮忙吧... WIN7 64位 8G虚拟内存是不是要关掉 matlab中怎么将一个矩阵作为另一个矩阵的元素放进去 win7虚拟内存怎么设置最好8g matlab怎么创建数组,怎么获得数组长度? WIN7 8G内存 虚拟内存要怎么设置? matlab 中怎样按概率产生随机数? win7 64位 8G内存 怎么设置虚拟内存最好 matlab 怎样创建一个0 1相间的向量 我win7系统 物理内存8G 虚拟内存设置多少合适? matlab如何把行向量生成1和0矩阵? windows7系统怎么关闭虚拟内存|win7关闭虚拟内存的方法 MATLAB怎么随机选一个数? win78g虚拟内存怎么设置最好 matlab怎么随机产生一个只有0和1的行向量 WIN7 8G内存应该设置虚拟内存为多少 randsrc这个命令在matlab的哪个路劲下 8g内存虚拟内存怎么设置最好win7 金字旁加施怎么读怎么没人知道是不是没有这个字啊 win7 8g内存虚拟内存怎么设置最好 randsrc这个命令在matlab的哪个路劲下 win7 64位8g内存还要虚拟内存么?怎么设?设多少? matlab函数rcosine怎么使用 matlab如何添加自定义信噪比的噪声信号? 请问X86的WIN7虚拟内存怎么设置好?8G matlab中假如我想生成1000个字母,这些字母从A.B.C.D四个中选,该怎么办? win78g内存需要设置虚拟内存吗 matlab7.0有哪些函数可以直接用 win732位系统重装步骤|win732重装系统教程 matlab函数大全(非常实用) 我win7系统 物理内存8G 虚拟内存设置多少合适? matlab中,如何控制函数图形描绘的速度? win7 64位旗舰 8G内存 怎么设置虚拟内存? 如何用matlab生成正弦函数表 如何安装Windows7系统 win7系统物理内存8g虚拟内存设置多少合适? 迷失神秘丛林岛小说txt全集免费下载 吾欲吾求电子书txt全集下载 怎样让自己录得一小段话变成太空人或机器人的声音 怎么把人声转换机器人的声音? 怎么把人声转换机器人的声音?