0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Matlab生成任意分布数据实例演示

8XCt_sim_ol 来源:仿真秀App 作者:过冷水 2022-04-27 14:46 次阅读

一、写在文前

在实际工作中经常会遇到类似概率分布的问题。概率问题经常会涉及到随机数分布问题,过冷水就遇到了如何生成满足如下分布数据的问题。

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

数据范围在2~20之间,但是生成的数据要满足如图所示的概率密度函数,在一般问题中我们经常遇到的生成平均数据使用rand()函数就可以生成0~1区间的随机数据然后对数据进行处理就可以得到满足任意区间的数据,生成满足正态分布的随机也有现成函数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

如果想要生成指定均值和方差的随机数该如何实现?其实在已知均匀分布的期望和方差条件下是可以反求均匀分布的区间的。均匀分布的期望和方差和随机数区间存在以下关系

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!在指定范围生成数据是非常实用的技能,其实如果能够构造出合适的约束条件,图形将会更加多样化。

三、正态分布

上述案例是给出了约束条件下的均匀分布,那么如何给出在约束条件下的非均匀分布?正态分布是非均匀分布中具有代表性的案例,正态分布实际可以直接调用randn()函数,为了比较清楚看正态分布生成随机数的特点,

我们以二维空间球体为案例来看一下正态分布数据。

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

我们得到和正态分布约束条件下的图像有相反的分布趋势,中间数据密集靠近外环的数据点较少,这样的一种分布在实际情况中就是有点像密度的非均匀变化,我们我们将生成的数据赋予其物理意义,就成功的将统计统计上的非均匀分布实实在在用在表述物质性质变化上了。很有实际意义。有需要的读者可自主尝试应用,本期过冷水就给大家分享上述内容。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • matlab
    +关注

    关注

    182

    文章

    2960

    浏览量

    230086
  • 数据
    +关注

    关注

    8

    文章

    6852

    浏览量

    88771
  • 函数
    +关注

    关注

    3

    文章

    4299

    浏览量

    62374

原文标题:过冷水:Matlab生成任意分布数据实例演示

文章出处:【微信号:sim_ol,微信公众号:模拟在线】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    DAC63204如何输出任意电压?

    DAC63204我采用SPI的通讯方式使STM32F407VGT6控制其生成任意电压,但是我发送完数据DAC芯片也没有任何反应,以下图片是我通过逻辑分析仪抓取到的数据,经过比对时序应
    发表于 11-15 08:31

    MATLAB(6)--特殊矩阵

    蒙矩阵 对于向量v=[v1 , v2 ,...,v n ],范德蒙矩阵一般形式为: 在Matlab中,函数vander(V)生成以向量V为基础的范德蒙矩阵。 希尔伯特矩阵 n阶希尔伯特矩阵的一般
    发表于 09-06 10:24

    任意波形发生器中波形生成方法

    任意波形发生器(Arbitrary Waveform Generator,简称AWG)作为电子测试领域的重要工具,能够生成各种复杂波形信号,以满足不同的测试需求。在通信、音频处理、雷达系统等领域
    的头像 发表于 05-29 17:13 731次阅读

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

    任意波形是指可以按照用户需求生成的波形,它不同于传统的正弦波、方波、锯齿波等标准波形
    的头像 发表于 05-28 16:23 362次阅读

    什么是任意波形发生器?任意波形发生器是干什么用的?

    任意波形发生器是一种高度灵活的电子测试设备,它能够生成几乎任何类型的电信号波形。
    的头像 发表于 05-28 16:19 737次阅读

    基于MATLAB的信号处理系统与分析

    基于MATLAB的信号处理系统与分析,包括信号的导入、预处理、分析、特征提取以及频谱分析等关键步骤,并通过实例展示MATLAB在信号处理与分析中的强大功能。
    的头像 发表于 05-17 14:24 950次阅读

    HarmonyOS开发实例:【分布数据服务】

    分布数据服务(Distributed Data Service,DDS)为应用程序提供不同设备间数据分布式的能力。
    的头像 发表于 04-18 10:18 674次阅读
    HarmonyOS开发<b class='flag-5'>实例</b>:【<b class='flag-5'>分布</b>式<b class='flag-5'>数据</b>服务】

    HarmonyOS开发实例:【分布数据管理】

    eTS中分布数据管理的使用,包括KVManager对象实例的创建和KVStore数据流转的使用。
    的头像 发表于 04-11 09:57 887次阅读
    HarmonyOS开发<b class='flag-5'>实例</b>:【<b class='flag-5'>分布</b>式<b class='flag-5'>数据</b>管理】

    鸿蒙HarmonyOS开发实例:【分布式关系型数据库】

    使用[@ohos.data.relationalStore]接口和[@ohos.distributedDeviceManager] 接口展示了在eTS中分布式关系型数据库的使用,在增、删、改、查的基本操作外,还包括分布式数据库的
    的头像 发表于 04-11 09:52 801次阅读
    鸿蒙HarmonyOS开发<b class='flag-5'>实例</b>:【<b class='flag-5'>分布</b>式关系型<b class='flag-5'>数据</b>库】

    浅谈任意波形发生器及通道合并功能

    浅谈任意波形发生器及通道合并功能  任意波形发生器(AWG)是一种能够产生各种复杂波形的信号发生器。它可以通过调节其输出信号的幅值、频率、相位等参数,生成任意形状的波形,包括正弦波、方
    的头像 发表于 01-19 15:54 581次阅读

    任意波发生器如何输出波形、带调制的信号?

    任意波发生器,如何输出波形、带调制的信号? 任意波发生器是一种用于产生各种波形的信号发生器。它可以生成特定频率、幅度、相位和形状的波形,并在需要时进行调制。在本文中,我们将探讨如何使用任意
    的头像 发表于 01-19 15:54 685次阅读

    如何利用Excel轻松创建任意波形?

    在从零开始创建任意波形时,大多数工程师要么采用工程编程环境,比如Matlab、LabVIEW或VEE,要么采用免费或收费的定制任意波形软件套件。这些是很好的工具,但如果你不常用的话,它们的价格就显得比较昂贵,并且学会使用也比较耗
    的头像 发表于 12-26 15:02 1047次阅读
    如何利用Excel轻松创建<b class='flag-5'>任意</b>波形?

    ZEMAX与MATLAB动态数据交换及其应用

    摘要 :为了将Zemax的光学系统设计和分析功能与Matlab强大的矩阵计算和数据分析功能很好地结合起来,对Matlab和Zemax的DDE(dynamic data exchange 动态
    的头像 发表于 12-25 12:29 1042次阅读
    ZEMAX与<b class='flag-5'>MATLAB</b>动态<b class='flag-5'>数据</b>交换及其应用

    鸿蒙原生应用开发——分布数据对象

    01、什么是分布数据对象 在可信组网环境下,多个相互组网认证的设备将各自创建的对象加入同一个 sessionId,使得加入的多个数据对象之间可以同步数据,也就是说,当某一
    发表于 12-08 10:01

    单个实例、多重实例和参数实例的区别

    在FB块中调用定时器时,选择了单个实例,那么该定时器的背景数据块就在系统块中生成了,也就是说,它不存在于FB的背景数据块中。
    发表于 12-04 10:35 1088次阅读
    单个<b class='flag-5'>实例</b>、多重<b class='flag-5'>实例</b>和参数<b class='flag-5'>实例</b>的区别