0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Matlab生成任意分布數據實例演示

8XCt_sim_ol ? 來源:仿真秀App ? 作者:過冷水 ? 2022-04-27 14:46 ? 次閱讀

一、寫在文前

在實際工作中經常會遇到類似概率分布的問題。概率問題經常會涉及到隨機數分布問題,過冷水就遇到了如何生成滿足如下分布數據的問題。

dedf7a5c-c5de-11ec-bce3-dac502259ad0.png

數據范圍在2~20之間,但是生成的數據要滿足如圖所示的概率密度函數,在一般問題中我們經常遇到的生成平均數據使用rand()函數就可以生成0~1區(qū)間的隨機數據然后對數據進行處理就可以得到滿足任意區(qū)間的數據,生成滿足正態(tài)分布的隨機也有現成函數randn()函數可調用,如圖所示的問題 how do?,本期過冷水就詳細的給大家講一講如何Matlab生成滿足任意概率密度的分布函數。二、均勻分布matlab的rand指令可以幫助我們生成0-1均勻分布的數據,這樣,如果我們想要[a,b]的分布數據,只需要a+(b-a)*rand就可以。需要注意的是rand函數有其內置的平均值和標準差

A=rand(1000000,1);muA=mean(A)sigmaA = std(A)muA =0.5000sigmaA =0.2887

如果想要生成指定均值和方差的隨機數該如何實現?其實在已知均勻分布的期望和方差條件下是可以反求均勻分布的區(qū)間的。均勻分布的期望和方差和隨機數區(qū)間存在以下關系

def080ea-c5de-11ec-bce3-dac502259ad0.png

如果想生成均值E=0;S=1的隨機數,可以利用上述公式反推出df01d2d2-c5de-11ec-bce3-dac502259ad0.png

B=2*sqrt(3)*rand(10000000,1)-sqrt(3);muB=mean(B)sigmaB = std(B)muB =3.8898e-04sigmaB =1.0000

均值和方差滿足預期,掌握了均勻分數數據生成后,可以做生成在約束條件的下均勻分布,在二維空間繪制半徑為r的圓內均勻分布數據點

df116e68-c5de-11ec-bce3-dac502259ad0.png

figure1 = figure;blackboard=imread('E:Picturelackboard.jpg'); colormap(gray);axes1 =axes('Parent',figure1,'units','normalized','position',[0 0 1 1]);uistack(axes1,'down')image(blackboard,'Parent',axes1,'CDataMapping','scaled')set(axes1,'handlevisibility','off','visible','off');axes2 = axes('Parent',figure1);hold(axes2,'on');plot(x,y,'MarkerFaceColor',[1 00],'Marker','o','LineStyle','none','Color',[1 0 0]);box(axes2,'on');axis(axes2,'equal');axis(axes2,'off');hold(axes2,'off');set(axes2,'FontName','Times NewRoman','FontSize',12,'FontWeight','bold','LineWidth',3,'Color','none');set(axes2,'Color','none','LineWidth',6,'TickLength',[0.010.005],'XColor',[1 0 1],'YColor',[1 0 1],'ZColor',[1 0 1]);同理可繪制半徑為r的三維球內均勻分布數據點angle1=rand(1,1000)*2*pi;angle2=acos(rand(1,1000)*2-1);r=power(rand(1,1000),1/3);x=r.*cos(angle1).*sin(angle2);y=r.*sin(angle1).*sin(angle2);z=r.*cos(angle2); figure1 = figure;colormap(gray);axes1 = axes('Parent',figure1,'units','normalized','position',[00 1 1]);uistack(axes1,'down')image(blackboard,'Parent',axes1,'CDataMapping','scaled')set(axes1,'handlevisibility','off','visible','off');axes2 = axes('Parent',figure1); hold(axes2,'on');plot3(x,y,z,'MarkerFaceColor',[10 0],'Marker','o','LineStyle','none','Color',[1 0 0]);view( axes2,[15 30])box(axes2,'on');axis(axes2,'square');hold(axes2,'off');box(axes2,'on')set(axes2,'Color','none','LineWidth',6,'TickLength',[0.010.005],'XColor',[1 0 1],'YColor',[1 0 1],'ZColor',[1 0 1]);

df3e8f92-c5de-11ec-bce3-dac502259ad0.png

Interesting!在指定范圍生成數據是非常實用的技能,其實如果能夠構造出合適的約束條件,圖形將會更加多樣化。

三、正態(tài)分布

上述案例是給出了約束條件下的均勻分布,那么如何給出在約束條件下的非均勻分布?正態(tài)分布是非均勻分布中具有代表性的案例,正態(tài)分布實際可以直接調用randn()函數,為了比較清楚看正態(tài)分布生成隨機數的特點,

我們以二維空間球體為案例來看一下正態(tài)分布數據。

angle=rand(1,1000)*2*pi;%(0,2*pi)之間均勻分布數據點r=sqrt(normrnd(0.3,0.13,[1,1000]));%(0,1)之間r^2均勻分布數據點x=r.*cos(angle);y=r.*sin(angle);figure1 = figure;axes1 = axes('Parent',figure1);hold(axes1,'on');plot(x,y,'MarkerFaceColor',[1 00],'Marker','o','LineStyle','none','Color',[1 0 0]);box(axes1,'on');axis(axes1,'square');hold(axes1,'off');set(axes1,'FontName','Times NewRoman','FontSize',12,'FontWeight','bold','LineWidth',3);

df6bc4c6-c5de-11ec-bce3-dac502259ad0.png

從圖像上我們生成了一圓層厚度不一致的隨機數,已經實現了滿足約束條件下的非隨機分布只要在往前走一步看如何生成特地的非隨機分布

四、任意隨機分布數據生成

可以采用MonteCarlo 方法采用隨機約束的方法來生成隨機數。

1:選定生成數據范圍[a,b],并在此范圍生成服從均勻分布數據xi;

2:生成服從均勻分布的數據y.y的取值范圍為概率密度分布范圍;

3:若y < f ( x )保留x,否則舍去。保留的x即為生成的數據,否則舍去。這一步就是對利用Y值對x進行甄選

我們來實踐一下

fun=@(x)(0.2089.*exp(-((x-9.985)./0.7535).^2)+ 0.*exp(-((x+1.593)./0.0846).^2)+0.1223.*exp(-((x-3.874)./0.585).^2)-0.1669.*exp(-((x+0.1669)./0.6609).^2)-0.02173.*exp(-((x-9.238)./0.5248).^2)-0.09805.*exp(-((x-8.219)./0.9768).^2)+0.1764.*exp(-((x-7.735)./1.995).^2) +0.07335.*exp(-((x-11.83)./2.733).^2))xmin=2.6;xmax=20;num=2000; %數據數量n=1;data1=zeros(1,num);whilen

df9125b8-c5de-11ec-bce3-dac502259ad0.png

根據上文思路寫出的代碼生成數據基本滿足一開始的分布特征,這樣就實現了自定義分布數據。可以利用自定義函數生成數據點特殊的分布函數,我們給出如下分布特征的密度函數

x=linspace(0,1,100);y =(2*x/0.3).*exp(-4*x/0.5);figureplot(x,y)figure1 = figure;axes1 = axes('Parent',figure1);hold(axes1,'on');plot(x,y,'LineWidth',3);ylabel('ρ(x)');xlabel('x');box(axes1,'on');hold(axes1,'off');set(axes1,'FontName','Times New Roman','FontSize',12,'FontWeight','bold','LineWidth',3);

dfa8b94e-c5de-11ec-bce3-dac502259ad0.png

將這樣的一個分布應用在二維圓的繪制上

fun=@(x)(2*x/0.3).*exp(-4*x/0.5);xmin=0;xmax=1;num=2000; %數據數量n=1;data1=zeros(1,num);while n

我們得到和正態(tài)分布約束條件下的圖像有相反的分布趨勢,中間數據密集靠近外環(huán)的數據點較少,這樣的一種分布在實際情況中就是有點像密度的非均勻變化,我們我們將生成的數據賦予其物理意義,就成功的將統(tǒng)計統(tǒng)計上的非均勻分布實實在在用在表述物質性質變化上了。很有實際意義。有需要的讀者可自主嘗試應用,本期過冷水就給大家分享上述內容。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • matlab
    +關注

    關注

    185

    文章

    2980

    瀏覽量

    230882
  • 數據
    +關注

    關注

    8

    文章

    7134

    瀏覽量

    89467
  • 函數
    +關注

    關注

    3

    文章

    4345

    瀏覽量

    62911

原文標題:過冷水:Matlab生成任意分布數據實例演示

文章出處:【微信號:sim_ol,微信公眾號:模擬在線】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    ADS1246用MATLAB生成濾波系數的時候,其中采樣頻率fs與AD的采樣率或者數據輸出速率有關聯(lián)嗎?

    ADS1246最大數據輸出速率是2ksps。 1.如果我的信號頻率范圍是1Hz到700Hz。ADS1246能否滿足信號完整輸出? 2.如果每采集完一個點,進行一次帶通濾波,在用MATLAB生成濾波
    發(fā)表于 01-03 07:16

    think-cell——使用JSON數據實現自動化(一)

    您可以使用 JSON 中的數據來復制最初作為模板創(chuàng)建的圖表,并為其提供新的數據表。您可以控制使用特定模板構建新演示文稿的順序。模板也可以多次使用。 PowerPoint 模板和 JSON 數據
    的頭像 發(fā)表于 01-02 13:37 ?100次閱讀
    think-cell——使用JSON<b class='flag-5'>數據實</b>現自動化(一)

    HarmonyOS Next 應用元服務開發(fā)-分布數據對象遷移數據文件資產遷移

    填充到分布數據對象數據中。 調用genSessionId()接口生成數據對象組網id,并使用該id調用setSessionId()加入組網,激活
    發(fā)表于 12-24 10:11

    HarmonyOS Next 應用元服務開發(fā)-分布數據對象遷移數據權限與基礎數據

    填充到分布數據對象數據中。 調用genSessionId()接口生成數據對象組網id,并使用該id調用setSessionId()加入組網,激活
    發(fā)表于 12-24 09:40

    Simulink與 MATLAB 的結合使用 Simulink中的信號處理方法

    在工程和科學研究中,信號處理是一個重要的領域,涉及到信號的采集、分析、處理和生成MATLAB 提供了豐富的信號處理工具箱,而 Simulink 提供了一個直觀的圖形界面,使得復雜的信號處理系統(tǒng)可以
    的頭像 發(fā)表于 12-12 09:25 ?472次閱讀

    DAC63204如何輸出任意電壓?

    DAC63204我采用SPI的通訊方式使STM32F407VGT6控制其生成任意電壓,但是我發(fā)送完數據DAC芯片也沒有任何反應,以下圖片是我通過邏輯分析儀抓取到的數據,經過比對時序應
    發(fā)表于 11-15 08:31

    MATLAB(6)--特殊矩陣

    蒙矩陣 對于向量v=[v1 , v2 ,...,v n ],范德蒙矩陣一般形式為: 在Matlab中,函數vander(V)生成以向量V為基礎的范德蒙矩陣。 希爾伯特矩陣 n階希爾伯特矩陣的一般
    發(fā)表于 09-06 10:24

    MATLAB(1)--MATLAB數值數據

    概述 數值數據類型的分類: 整型 浮點型 復數型 整型 在MATLAB 共有八種整數類型,其中四種為符號型(int8,int16,int32,int64),四種無符號型(uint8,uint16
    發(fā)表于 09-05 16:28

    任意波形發(fā)生器中波形生成方法

    任意波形發(fā)生器(Arbitrary Waveform Generator,簡稱AWG)作為電子測試領域的重要工具,能夠生成各種復雜波形信號,以滿足不同的測試需求。在通信、音頻處理、雷達系統(tǒng)等領域
    的頭像 發(fā)表于 05-29 17:13 ?1027次閱讀

    任意波是什么意思?怎么調呢?

    任意波形是指可以按照用戶需求生成的波形,它不同于傳統(tǒng)的正弦波、方波、鋸齒波等標準波形
    的頭像 發(fā)表于 05-28 16:23 ?542次閱讀

    什么是任意波形發(fā)生器?任意波形發(fā)生器是干什么用的?

    任意波形發(fā)生器是一種高度靈活的電子測試設備,它能夠生成幾乎任何類型的電信號波形。
    的頭像 發(fā)表于 05-28 16:19 ?924次閱讀

    基于MATLAB的信號處理系統(tǒng)與分析

    基于MATLAB的信號處理系統(tǒng)與分析,包括信號的導入、預處理、分析、特征提取以及頻譜分析等關鍵步驟,并通過實例展示MATLAB在信號處理與分析中的強大功能。
    的頭像 發(fā)表于 05-17 14:24 ?1208次閱讀

    HarmonyOS開發(fā)實例:【分布數據服務】

    分布數據服務(Distributed Data Service,DDS)為應用程序提供不同設備間數據分布式的能力。
    的頭像 發(fā)表于 04-18 10:18 ?786次閱讀
    HarmonyOS開發(fā)<b class='flag-5'>實例</b>:【<b class='flag-5'>分布</b>式<b class='flag-5'>數據</b>服務】

    HarmonyOS開發(fā)實例:【分布數據管理】

    eTS中分布數據管理的使用,包括KVManager對象實例的創(chuàng)建和KVStore數據流轉的使用。
    的頭像 發(fā)表于 04-11 09:57 ?979次閱讀
    HarmonyOS開發(fā)<b class='flag-5'>實例</b>:【<b class='flag-5'>分布</b>式<b class='flag-5'>數據</b>管理】

    鴻蒙HarmonyOS開發(fā)實例:【分布式關系型數據庫】

    使用[@ohos.data.relationalStore]接口和[@ohos.distributedDeviceManager]?接口展示了在eTS中分布式關系型數據庫的使用,在增、刪、改、查的基本操作外,還包括分布式數據庫的
    的頭像 發(fā)表于 04-11 09:52 ?993次閱讀
    鴻蒙HarmonyOS開發(fā)<b class='flag-5'>實例</b>:【<b class='flag-5'>分布</b>式關系型<b class='flag-5'>數據</b>庫】