精华内容
下载资源
问答
  • Matlab 事件与响应

    2020-08-25 15:15:49
    matlab关于事件与响应,一个重要的作用是:监控实例的内部数据的变化(事件),并根据变化做出必要的回应(响应)。存在两种不同角色:发布者(Publisher)观察者(Observer); 一个完整的事件与响应,应该包括以下部分:...

    事件与响应

    matlab关于事件与响应,一个重要的作用是:监控实例的内部数据的变化(事件),并根据变化做出必要的回应(响应)。存在两种不同角色:发布者(Publisher)和观察者(Observer);

    一个完整的事件与响应,应该包括以下部分:

    • 定义事件:在指定类中定义事件的名称;
    • 触发事件:定义触发事件的函数或方法;
    • 监听事件:触发事件后,监听对象调用回调函数做出响应;

    回调函数中可以对发布者的数据进行处理。

    % 发布者定义事件+定义触发事件
    classdef Publisher < handle
        properties
            x=0;
        end
        events% 定义事件
            xChanged
        end
        methods
    
            % 定义触发事件
            function setX(obj,newVal)
                if obj.x ~= newVal
                    obj.x = newVal;
                    notify(obj,'xChanged');
                end
            end
        end
    
    
    end
    % 观察者定义监听事件和回调函数
    classdef Observer < handle
        methods %指定需要监听的对象
            function subscribe(obj,publisher)
                addlistener(publisher,'xChanged',@Observer.callbackFunc);
            end
        end
        methods(Static)
            function callbackFunc(src,data)
                disp('value of x:',num2str(src.x));
            end
        end
    
    end
    
    % 主函数脚本
    publisher = Publisher();
    observer  = Observer();
    observer.subscribe(publisher);
    % 改变x的值
    publisher.setX(10);
    

    几个重要的函数

    • notify(srcObject,eventName)
      • srcObject:指定当前触发的对象;
      • eventName:指定当前事件的名称;
    • addlistener(srcPublisher,EventName,callbackFunc)
      • srcPublisher:指定需要监听的对象;
      • eventName:指定当前事件的名称,与notify中的eventName对应;
      • callbackFunc:指定回调函数;
    展开全文
  • vissim =actxserver('VISSIM.vissim.430'); %% 加载交通网络 current_path = pwd; vissim.LoadNet([current_path '\vissim.inp']); vissim.LoadLayout([current_path '\vissim.ini']); %%设置仿真参数 ...

    %%建立VISSIM的COM接口
    vissim =actxserver('VISSIM.vissim.430');
    %% 加载交通网络
    current_path = pwd;
    vissim.LoadNet([current_path '\vissim.inp']);
    vissim.LoadLayout([current_path '\vissim.ini']);  
    %%设置仿真参数
    sim = vissim.Simulation;
    new_period_time =101;
    sim.set('Period',new_period_time);
    new_Resolution =1; 
    sim.set('Resolution',new_Resolution);
    new_Speed=1;
    sim.set('Speed',new_Speed);
    new_Random_Seed=50;
    %sim.set('RandomSeed',new_Random_Seed);

    step=0;

    while step<new_period_time*new_Resolution

        sim.RunSingleStep;
        step=step+1;

       DOEVENT();

    sim.Stop;

    展开全文
  • 文章目录4 事件和响应4.1 事件4.2 发布者通知观察者,但不传递消息4.3 发布者通知观察者,并且传递消息4.4 删除listener 4 事件和响应 4.1 事件 事件(event)和响应(responses)一般用在对象之间的相互传递信息。...

    4 事件和响应

    4.1 事件

    事件(event)和响应(responses)一般用在对象之间的相互传递信息。MATLAB内部句柄类自动继承了事件响应相关功能。

    • 定义事件和监听事件
      事件机制相关的方法:addlistener和notify
    classdef DataSource < handle
        %...空类
        events % 定义事件
            dataChangeed
        end
        methods
            function internalDataChange(obj)
                obj.notify('dataChanged');
            end
        end
    end
    

    通过addlistener 用来构造监听者,响应函数可以是普通函数、成员方法、静态方法。

    lh = addlistener(eventObject,'EventName',@functionName)
    lh = addlistener(eventObject,'EventName',@Obj.methodName)
    lh = addlistener(eventObject,'EventName',@ClassName.methodName)
    

    @后接响应函数的接口,函数的必须至少接受两个输入,第一个是发布者对象(src),第二个是事件的数据(eventdata)本身也是一个对象,定制向监听者传递数据。
    监听者(listener)实现Publisher和Observer之间的解耦合。

    • 使用事件机制的原因
      假设无event和notify机制,DataSource类的对象在数据改变之后可以通知其观察对象:
    • 要知道哪些对象需要得到数据更新的通知;
    • 知道监听对象的响应函数名字,并进行调用;
     function broadcastDataChanged(obj,observerObj1,observerObj2)
                %数据发生变化
                someFunction();  %调用普通相应函数
                observerObj1.response(); %调用观察者1的响应函数
                observerObj2.response();%2
            end
    
    • 响应函数response和update之间是硬编码;
    • DataSource和观察者之间的耦合过于紧密;
    • 假设100个观察者,调用100个函数

    4.2 发布者通知观察者,但不传递消息

    回调函数分为:普通函数、类的静态方法和普通成员方法。

    clear all;clc;
    p = DataSource();
    o = Observer();
    p.addlistener('dataChangedSimple',@updateViewSimpleFunction);
    p.addlistener('dataChangedSimple',@Observer.updateViewStatic);
    p.addlistener('dataChangedSimple',@o.updateView);
    
    p.notify('dataChangedSimple');
    
    
    

    通知顺序是不确定的,外部程序不应对通知顺序有依赖。

    4.3 发布者通知观察者,并且传递消息

    classdef TimeStamp < event.EventData
        properties
            ts %时间戳对象内部封装
        end
        methods
            function obj = TimeStamp()
                tempTime = clock;
                obj.ts = ['(' num2str(tempTime(4),'%02.0f') ':'...
                    num2str(tempTime(4),'%02.0f') ':'...
                    num2str(tempTime(4),'%02.0f') ')'];
            end
        end
    end
    
    
    classdef DataSourcePublisher < handle
        events
            dataChanged
        end
        methods
            % 数据改变发生,发布者通知各个观察者,
            function queryData(obj) %query the hardware, data changed
                obj.notify('dataChanged',TimeStamp());
            end
        end
    end
    
    
    clear all;clc;
    p = DataSourcePublisher();
    o = Observer();
    p.addlistener('dataChanged',@updateViewStampFunc);
    p.addlistener('dataChanged',@Observer.updateViewStatic);
    p.addlistener('dataChanged',@o.updateView);
    p.queryData();
    

    可以实现通知和消息传递功能。
    event.EventData类是handle类,可以用于传递大型数据。

    classdef Message < event.EventData
        properties
            matrix
        end
        methods
            function obj = Message(internalData)
                obj.matrix = internalData;  %假设。。为矩阵
            end
        end
    end
    
    function queryData(obj)
        % 数据发生改变
        msgObj = Message(obj.internalData);
        obj.notify('dataChanged',msgObj);
    end
    

    4.4 删除listener

    listener对象本身是handle类,注销一个listener时,只需要调用handle类的delete方法即可。

    展开全文
  • MATLAB-蒙特卡罗方法

    万次阅读 2019-08-16 20:14:48
    蒙特卡罗方法又称统计模拟法、随机抽样技术,是一种随机模拟方法,以概率统计理论方法为基础的一种计算方法,是使用随机数(或伪随机数)来解决很多计算问题的方法。将所求解的问题同一定的概率模型相联系,用...

    什么叫蒙特卡罗方法?

           蒙特卡罗方法又称统计模拟法、随机抽样技术,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或伪随机数)来解决很多计算问题的方法。将所求解的问题同一定的概率模型相联系,用电子计算机实现统计模拟或抽样,以获得问题的近似解。为象征性地表明这一方法的概率统计特征,故借用赌城蒙特卡罗命名。

    基本思想

           当所求问题的解是某个事件的概率,或者是某个随机变量的数学期望,或者是与概率,数学期望有关的量时,通过某种试验的方法,得出该事件发生的概率,或者该随机变量若干个具体观察值的算术平均值,通过它得到问题的解。

           当随机变量的取值仅为1或0时,它的数学期望就是某个事件的概率。或者说,某种事件的概率也是随机变量(仅取值为1或0)的数学期望。

    蒙特卡罗方法的特点

    优点:

    1、能够比较逼真地描述具有随机性质的事物的特点及物理实验过程

    2、受几何条件限制小

    3、收敛速度与问题的维数无关

    4、具有同时计算多个方案与多个未知量的能力

    5、误差容易确定

    6、程序结构简单,易于实现

    缺点:

    1收敛速度慢

    2误差具有概率性

    3在粒子输运问题中,计算结果与系统大小有关    

          所以在使用蒙特卡罗方法时,要“扬长避短”,只对问题中难以用解析(或数值)方法处理的部分,使用蒙特卡罗方法计算,对那些能用解析(或数值)方法处理的部分,应当尽量使用解析方法

    什么是随机数?

          在连续型随机变量的分布中,最简单而且最基本的分布是单位均匀分布。由该分布抽取的简单子样称为随机数序列,其中每一个体称为随机数

    符号:

    两个特点:独立性,均匀性

    产生随机数

    随机数表方法

          随机数表是由0,1,2,3,4,5,6,7,8,9十个数字组成,每个数字以0.1的等概率出现,数字之间相互独立,这些数字序列叫作随机数字序列。 (如果要得到n位有效数字的随机数,只需将表中每n个相邻的随机数字合并在一起,且在最高位的前边加上小数点即可。例如,某随机数表的第一行数字为7 6 3 4 2 5 8 9 1...,要想得到三位有效数字的随机数一次为0.763,0.425,0.891...)

    物理方法

          利用某些物理现象,在计算机上增加些特殊设备,可以在计算机上直接产生随机数。 作为随机数发生器的物理源主要有两种:一种是根据放射性物质的放射性,另一种是利用计算机的固有噪声。

          一般情况下,任意一个随机数在计算机内总是用二进制的数表示的:或者为0,或者为1。因此,利用物理方法在计算机产生随机数,就是要产生只取0或1的随机数字序列,数字之间相互独立,每个数字取0或1的概率均为0.5

    缺点

          随机数表需在计算机中占有很大内存,而且也难以满足蒙特卡罗方法对随机数需要量非常大的要求,因此,该方法不适于在计算机上使用。

          物理方法产生的随机数序列无法重复实现,不能进行程序复算。给验证结果带来很大困难。而且增加随机数发生器和电路联接等 附加设备,费用昂贵。因此该方法也不适合在计算机上使用。

    伪随机数

         用递推公式

    产生随机数序列。  

    伪随机数存在的两个问题

           递推公式和初始值确定后,整个随机数序列便被唯一确定。不满足随机数相互独立的要求。 由于随机数序列是由递推公式确定的,而在计算机上所能表示的[0,1]上的数又是有限的,因此,这种方法产生的随机数序列就不可能不出现重复。随机数序列出现周期性的循环现象。

    解决方案

    第一个问题:不能从本质上加以改变,但只要递推公式选的比较好,随机数间的相互独立性是可以近似满足的。

    第二个问题:因为用蒙特卡罗方法解任何具体问题时,所使用的随机数的个数总是有限的,只要所用随机数的个数不超过伪随机数序列出现循环现象时的长度就可以了。

    应用:蒙特卡罗方法计算积分

           可以通俗地说,蒙特卡罗方法是用随机试验的方法计算积分,即将所要计算的积分看作服从某种分布密度函数f(r)的随机变量g(r)的数学期望        

    通过某种试验,得到N观察值r1,r2,…,rN(用概率语言来说,从分布密度函数f(r)中抽取N个子样r1,r2,…,rN,),将相应的N个随机变量的值g(r1),g(r2),…,g(rN)的算术平均值  

     

    作为积分的估计值(近似值)。 

    蒙特卡罗方法步骤如下:

    1、在区间【a,b】上利用计算机均匀产生n个随机数x1,x2·····xn,这个可以在MATLAB软件中用unifrnd命令实现。

    2、计算每一个随机数相应的被积函数值f(x1),f(x2)····f(xn)。

    3、计算被积函数值的平均值

    4、所以2.1式的值≈

    简单定积分例子:用蒙特卡罗方法求

    首先我们进行严格的数学计算, 便于后面与蒙特卡洛计算方法所得结果形成对比:已知 e^x的原函数是e^x,那么定积分值就是:

    我们可以在Matlab中输入以下代码进行精确计算:exp(2)-exp(0),这个值是此定积分的真实值. 下面进行蒙特卡洛计算上述定积分,其MATLAB代码如下:

    N=500; 
    x=unifrnd(0,2,N,1); 
    y=(2-0)*mean(exp(x))

    上述三条语句完整实现了蒙特卡洛计算上述定积分步骤.第一条语句是设定了停止条件, 共做N次Monte Carlo 模拟.第二条语句实现了在积分区间上均匀产生N个随机数.第三条语句实现蒙特卡洛计算方法的面积逼近.对N设置不同的值,观察所得蒙特卡洛计算方法定积分值,如表1所示,我们可以发现:当不断增大N值时,所得结果越来越接近真实值.

    蒙特卡罗计算方法性质:

    蒙特卡洛计算方法依据概率统计理论,具有统计特性,主要表现在以下三个方面.

    1.蒙特卡洛计算方法具有随机性、不确定性.即每次运行结果都会不一样,因为计算机产生随机数并不是可以重现的.

    2.蒙特卡洛计算方法具有统计稳定性。虽然每次运行产生随机数是不一样的,但是随机数的概率分布是一样的,所以蒙特卡洛计算方法可以满足概率统计的稳定性.

    3.随着随机数数量增加,蒙特卡洛计算方法所得结果会更加逼近真实值,这就是我们所讲的依概率收敛到真实值意义.

    %%  蒙特卡罗方法求定积分
    %给定曲线y =2 – x2 和曲线y3 = x2,曲线的交点为:P1( – 1,1 )、P2( 1,1 )。
    %曲线围成平面有限区域,用蒙特卡罗方法计算区域面积。
    %随机产生100000个点
    P=rand(100000,2);
    %定义x y 的范围
    x=2*P(:,1)-1;
    y=2*P(:,2);
    %找出在函数范围的数
    % k = find(X) 返回一个包含数组 X 中每个非零元素的线性索引的向量。
    % 如果 X 为向量,则 find 返回方向与 X 相同的向量。
    % 如果 X 为多维数组,则 find 返回由结果的线性索引组成的列向量。
    % 如果 X 包含非零元素或为空,则 find 返回一个空数组。
    II=find(y<=2-x.^2&y.^3>=x.^2);
    %计算索引的长度
    M=length(II);
    %计算面积
    S=4*M/100000
    plot(x(II),y(II),'g.')
    
    

     

    展开全文
  • 如果说到事件相关电位最常用(可以免费)的软件,大概要属MATLAB,其原因在于:第一,心理学老师们用的相对多,如果你的老板在用MATLAB,那也最好跟着用吧。第二,不需要密码狗(重中之重),虽然...
  • 无论是为了建模还是为了计算,首先基本度量单位要同一,神经网络是以样本在事件中的统计分别几率来进行训练(概率计算)预测的,且sigmoid函数的取值是0到1之间的,网络最后一个节点的输出也是如此,所以经常要
  • 脑电图(Electroencephalogram,EEG)是通过精密的电子仪器,从头皮上将脑部的自发性生物电位加以...用EEGLABERPLAB提取ERP成分的同学都知道,Extractepochs或Extract bin-based epochs的方法可以锁定感兴趣的事件...
  • 假设X、Y是一对事件,他们的联合概率是指事件X和事件Y共同发生的概率,条件概率是指事件X发生下事件Y发生的概率,即。XY的联合概率、条件概率满足如下关系: 将公式变形如下: 称为贝叶斯定理。 贝叶斯...
  • Matlab三种归一化方法

    万次阅读 2015-12-13 11:26:14
    无论是为了建模还是为了计算,首先基本度量单位要同一,神经网络是以样本在事件中的统计分别几率来进行训练(概率计算)预测的,且sigmoid函数的取值是0到1之间的,网络最后一个节点的输出也是如此,所以经常要对...
  • 随机模拟—蒙特卡洛方法 Matlab代码实现 蒙特卡洛方法 蒙特卡洛方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展电子计算机的发明,而被提出的一种以概率统计理论为...
  • 随机模拟——蒙特卡洛方法(含实例及matlab代码)

    万次阅读 多人点赞 2020-02-02 21:26:08
    蒙特卡洛方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更...
  • Matlab--三种归一化方法

    千次阅读 2019-04-19 20:27:38
    无论是为了建模还是为了计算,首先基本度量单位要同一,神经网络是以样本在事件中的统计分别几率来进行训练(概率计算)预测的,且sigmoid函数的取值是0到1之间的,网络最后一个节点的输出也是如此,所以经常要对...
  • MATLAB中的三种归一化方法

    万次阅读 2017-04-21 13:49:30
    无论是为了建模还是为了计算,首先基本度量单位要同一,神经网络是以样本在事件中的统计分别几率来进行训练(概率计算)预测的,且sigmoid函数的取值是0到1之间的,网络最后一个节点的输出也是如此,所以经常要对...
  • 本书首先介绍TMATLAB语言程序设计的基本内容,在此基础上系统地介绍了系统仿真所必要的数值计算方法MATLAB实现,并以Simulink为主要工具介绍了系统仿真方法与技巧,包括连续系统、离散系统、随机输入系统复数...
  • matlab命令手册pdf

    2011-05-23 20:39:36
    14.2.2 共有属性和方法 256 14.2.3 根对象 257 14.2.4 图形对象 258 14.2.5 轴对象 262 14.2.6 用户控制对象 267 14.2.7 用户菜单对象 269 14.2.8 用户快捷菜单对象 270 14.2.9 图像对象 272 14.2.10 线条对象 273 ...
  • Matlab作为客户端应用程序,就是编写M语言或者在Matlab命令行中利用Matlab提供的COM客户端函数来实现COM对象的创建、属性的访问、方法的执行和事件的响应。从而实现应用程序的集成。在matlab天空中,我们讲到...
  • 事件:用GUI做K-Means聚类算法目的:试图将每次迭代过程中各类的类心在listbox中显示以前的思维:在VB或VC中都可以很方便的用add方法现状:Matlab中不支持这样的处理方式,matlab的思维是对于每一个unicontrol通过...
  • 数据可视化数据可视化(Data Visualization)是指运用计算机图形学图像处理技术,将数据转换为图形或图像在屏幕上显示出来,并进行交互处理的理论、方法和技术。它涉及计算机图形学、图像处理、计算机辅助设计、...
  • Matlab蒙特卡罗模拟

    千次阅读 2020-06-04 21:25:19
    Matlab蒙特卡罗模拟: 可以用蒙特卡罗方法来近似模拟求pi值: 思路: 设相互独立的随机变量X,Y均服从[-1,1]上的均匀分布,则(X,Y)服从{-1≤x≤1, 1≤y≤1}上的二元均匀分布(即图1中正方形区域上的二元均匀分布),记...
  • 基于MATLAB编译器MEX文件的VC_与MATLAB混合编程.pdf 基于MATLAB编译器的VC与MATLAB混合编程.pdf 基于MFCSockets实现安全可靠的网络通讯.pdf 基于MFC与ADO接口的企业采购管理系统设计.pdf 基于MFCUG的飞艇参数化...
  • MATLAB中的“类”

    2020-12-29 10:41:42
    这些特征由定义类的属性、方法事件,以及修改每个类组件行为的特性值确定。 类定义说明,类的对象是如何创建销毁的,对象包含什么数据,以及如何操作这些数据。 MATLAB中的每一个值都有一个类。如: 预定义的类...
  • 熵权法matlab

    2018-11-23 14:24:20
    根据熵的特性,可以通过计算熵值来判断一个事件的随机性及无序程度,也可以用熵值来判断某个指标的离散程度,指标的离散程度越大,该指标对综合评价的影响(权重)越大,其熵值越小。 二、熵值法步骤 1. 选取n个...
  • MATLAB混合编程与工程应用.pdf

    热门讨论 2010-05-19 10:32:48
    8.1 通过Excel Link 实现Excel 和MATLAB 的数据共享162 8.1.1 概述162 8.1.2 Excel Link 的安装162 8.1.3 Excel Link 的函数166 8.1.4 Excel Link 应用实例167 8.1.5 Excel Link 的注意事项175 8.2 使用Excel 生成器...
  • 摘要:结合单片机和Matlab两者的优点,基于事件驱动的中断通信机制,提出一种Matlab环境下PC机与单片机实时串行通信及数据处理的方法;完成单片机数据采集系统与PC机的RS-232/RS-485串行通信及其通信数据的分析处理...
  • 摘要:结合单片机和Matlab两者的优点,基于事件驱动的中断通信机制,提出一种Matlab环境下PC机与单片机实时串行通信及数据处理的方法;完成单片机数据采集系统与PC机的RS-232/RS-485串行通信及其通信数据的分析处理...
  • Matlab与单片机的串行通信及数据处理 ...摘要:结合单片机和Matlab两者优点,基于事件驱动中断通信机制,提出一种Matlab环境下PC机与单片机实时串行通信及数据处理方法;完成单片机数据采集系统与PC机RS-232/RS
  • 基于MATLAB编译器MEX文件的VC_与MATLAB混合编程.pdf 基于MATLAB编译器的VC与MATLAB混合编程.pdf 基于MFCSockets实现安全可靠的网络通讯.pdf 基于MFC与ADO接口的企业采购管理系统设计.pdf 基于MFCUG的飞艇参数化...
  • 基于MATLAB编译器MEX文件的VC_与MATLAB混合编程.pdf 基于MATLAB编译器的VC与MATLAB混合编程.pdf 基于MFCSockets实现安全可靠的网络通讯.pdf 基于MFC与ADO接口的企业采购管理系统设计.pdf 基于MFCUG的飞艇参数化...

空空如也

空空如也

1 2 3 4 5
收藏数 81
精华内容 32
关键字:

matlab事件和方法

matlab 订阅