如何在matlab中產生不均勻的隨機矩陣

時間 2022-10-30 21:20:34

1樓:匿名使用者

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

我給定乙個區間,這個區間外的概率我認為是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*')

2樓:匿名使用者

randsrc(10,10,[0 1;.3 .7])

上面這個是標準的生成離散概率資料的命令,但其實就算不知道這個函式也無妨,可以這樣做

rand(10)>.3

3樓:匿名使用者

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得到。

如何用matlab產生乙個均勻分布在(-5,4)之間的隨機矩陣(4×4)... **是什麼呢

4樓:

1. 如果你要隨機均勻抽取整數

a=randint(1,16,[-5,4])a=reshape(a,4,4);

2.如果帶有小數的話

a=-5+(4+5).*rand(4,4)

5樓:匿名使用者

unifrnd(-5,4,4,4)

6樓:

unifrnd(-5,4,4,4)

ans =

3.6145 -1.2041 0.9017 1.1086

-0.6316 3.2416 -4.6786 1.8197

2.2025 2.1299 2.6422 1.6882

-3.7230 3.6354 3.4059 -1.4700

怎麼在matlab裡生成乙個8階均勻分布的隨機矩陣

7樓:匿名使用者

最簡單的答案:

>> a = rand(8)

a =0.8147 0.9575 0.

4218 0.6787 0.2769 0.

4387 0.7094 0.9597

0.9058 0.9649 0.9157 0.7577 0.0462 0.3816 0.7547 0.3404

0.1270 0.1576 0.7922 0.7431 0.0971 0.7655 0.2760 0.5853

0.9134 0.9706 0.9595 0.3922 0.8235 0.7952 0.6797 0.2238

0.6324 0.9572 0.6557 0.6555 0.6948 0.1869 0.6551 0.7513

0.0975 0.4854 0.0357 0.1712 0.3171 0.4898 0.1626 0.2551

0.2785 0.8003 0.8491 0.7060 0.9502 0.4456 0.1190 0.5060

0.5469 0.1419 0.9340 0.0318 0.0344 0.6463 0.4984 0.6991

8樓:匿名使用者

均勻分布是什麼意思? 每行的值符合均勻分布?

matlab中怎麼產生離散的均勻隨機數?

9樓:匿名使用者

unidrnd可以產生離散的均勻隨機數,其實在新版的matlab中支援模糊查詢,在command視窗中輸入uni然後按下tab鍵,所有以uni開頭的函式都會列出來!

10樓:shine戚七七

以產生0-1上均勻分布的

隨機數為例:

方法1、對於問題,如果 y 是m*n的服從0~1均勻分布的隨機矩陣:

y = rand(m,n);

方法2、用統計工具箱,y = unifrnd(0,1,m,n).

另外,提供常用的函式分布供參考:

1、 均勻分布u(a,b)

產生m*n階[a,b]均勻分布u(a,b)的隨機數矩陣:unifrnd (a,b,m, n)

2、0-1分布u(0,1)

產生m*n階[0,1]均勻分布的隨機數矩陣:rand (m, n)

3、二類分布binornd(n,p,mm,nn),即產生mm*nn均值為n*p的矩陣

4、產生m*n階離散均勻分布的隨機數矩陣:

unidrnd(n,mm,nn) 產生乙個數值在1-n區間的mm*nn矩陣;

5、產生mm nn階期望值為 的指數分布的隨機數矩陣:exprnd ( ,mm, nn).

11樓:上善之水

rand(x)是生成1以內的隨機數

你可以讓它*你需要數的範圍

matlab 如何隨機生成不重複的隨機矩陣

12樓:

randperm。。。。。

說我回答太簡潔。。。。。

就是這個函式麼。。。。。

討厭。。。。。

13樓:匿名使用者

randi(9,3,3)

matlab中怎麼產生乙個隨機矩陣

14樓:匿名使用者

matlab中通過rand函式產生的是介於0到1(不包括1)之間的偽隨機數。更多資訊請在matlab命令視窗輸入help rand獲得幫助資訊。

用法:1.rand(n)表示產生乙個n×n的隨機矩陣,n必須是整數,否則會報錯。

2.rand(m,n)或rand([m n])產生m×n均勻分布的隨機矩陣,元素取值在0.0~1.0。

3.x=rand(1,10);產生10個0~1的隨機數。

15樓:匿名使用者

rand(m,n)

產生mxn,0~1均勻分布的隨機矩陣

怎麼用matlab做乙個均勻分布在(-5,5)之間隨機矩陣(10×2)?

16樓:匿名使用者

rand(50,2) %生成50*2的0~1之間的均勻分布的隨機矩陣;

100*rand(50,2) %把生成的0~1之間的隨機矩陣的值變為為0~100之間的隨機矩陣;

round(100*rand(50,2)) %把生成的0~100隨機數取整數

round(100*rand(50,2))/10 %把生成的整數矩陣除以10,變為只有一位小數的矩陣,值的範圍為0~10

5-round(100*rand(50,2))/10 %5減去0~10的隨機矩陣,生成滿足條件的矩陣。

matlab產生一均勻分布在(-5,5)之間的隨機陣(50*2),要求精確到小數點後一位,怎麼做?

17樓:宇逸

rand(50,2) %生成50*2的

0~bai1之間的均勻

du分布的隨機矩zhi陣;

100*rand(50,2) %把生成的0~1之間的隨機矩陣的值變為dao為版0~100之間的隨機矩陣;權

round(100*rand(50,2)) %把生成的0~100隨機數取整數

round(100*rand(50,2))/10 %把生成的整數矩陣除以10,變為只有一位小數的矩陣,值的範圍為0~10

5-round(100*rand(50,2))/10 %5減去0~10的隨機矩陣,生成滿足條件的矩陣。

matlab的引數積分程式設計,如何在matlab的m檔案裡編寫個積分程式

輸出圖形為 見附件 如何在matlab的m檔案裡編寫個積分程式 感覺不需要使用m檔案,根據你給的 函式f x 的引數x沒有作用啊。具體需求是什麼?下面是求積分 f x exp 0.5 x sin x pi 6 s quad f,0,pi matlab中帶引數的定積分求解 來個簡單點的。步長統一取0....

Matlab如何在桌面同時顯示以上figure圖

matlab在乙個視窗中繪製多個子圖步驟如下。1 開啟軟體,找到影象輸出控制部分語句,這裡演示輸出3個不同曲線,復通過figure控制結果顯示到的視窗。2 執行後,制通過這種控制方式,只是將結果分別存放到不同視窗,並不是在同一視窗下,分多行顯示。3 使用hold on,注意新增多次,執行程式後,可以...

如何在matlab中繪製多個子圖

採用subplot命令 subplot m,n,x 表示要畫乙個m n個圖的第x張圖,如subplot 2,3,1 表示指定畫2行3列圖中的第1張,也就是第一行的第一張。然後和普通的plot 一樣操作。如畫乙個正弦曲線y sin x 採用如下命令subplot 2,2,1 指定2行2列中的第一張 x...

matlab 中 如何在矩陣中插入1行

matlab中如何在矩陣中插入1行的方法。如下參考 1.查詢並開啟桌面上的matlab軟體。2.輸入乙個矩陣a 1,2 3,4 在命令列中。3.然後按enter鍵輸出a的結果,如下圖所示。4.然後在命令列上定義乙個向量z 5,6 5.將這裡的新矩陣定義為新矩陣。6.然後再次按回車鍵並在zd命令視窗中...

如何在matlab中畫兩條曲線,Matlab中如何在一幅圖中畫很多條曲線?

要是想把一張圖分成兩部分各畫一條曲線的話,就用subplot命令。如果是想在乙個座標軸裡畫兩條曲線,可以在畫完一條後,用以下命令hold on hold off 把畫第二條曲線的命令寫在中間就行了。把最後一行改成 plot x,y,r hold plot x,z,g 效果就正常點了.x 0.000 ...