草庐IT

MATLAB 马尔可夫链

小嗷犬 2023-06-07 原文

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页:小嗷犬的个人主页
🍊个人网站:小嗷犬的技术小站
🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。


本文目录


马尔可夫链

马尔可夫链是一种随机过程,它的状态转移是由当前状态决定的,与过去的状态无关。马尔可夫链的状态转移矩阵是一个方阵,它的每一行元素之和为1,这样的矩阵称为概率转移矩阵。马尔可夫链的状态转移矩阵可以用来表示状态转移的概率。


MATLAB 马尔可夫链预测模型

例1
有一个时齐的马尔可夫链,其状态转移矩阵为:

[ 0.5 0.3 0.2 0.2 0.6 0.2 0.4 0.2 0.4 ] \begin{bmatrix} 0.5 & 0.3 & 0.2\\ 0.2 & 0.6 & 0.2\\ 0.4 & 0.2 & 0.4 \end{bmatrix} 0.50.20.40.30.60.20.20.20.4

当前状态为第二个状态,求经过5步后的状态概率分布。

% 状态转移矩阵
P = [0.5 0.3 0.2; 0.2 0.6 0.2; 0.4 0.2 0.4];
% 初始状态
x0 = [0 1 0];
% 经过15步后的状态概率分布
x5 = x0 * P^5

输出结果为:

x5 =
    0.3552    0.3949    0.2499

例2
某农业地区的收成有三个状态,即“丰收”、“平收”和“欠收”,记为1、2、3。下表列出了该地区 1950-1989 年期间农业收成状态:

年份1950195119521953195419551956195719581959
状态1123213212
年份1960196119621963196419651966196719681969
状态3123121331
年份1970197119721973197419751976197719781979
状态3321132212
年份1980198119821983198419851986198719881989
状态1321122312

请根据以上数据,预测 1990-1999 年的收成状态。

40 年中有 39 次状态转移,假设马尔可夫链是时齐的,根据不同状态转移发生的频率来估计概率:

% 转移概率
p11 = 3/15;
p12 = 7/15;
p13 = 5/15;
p21 = 7/13;
p22 = 2/13;
p23 = 4/13;
p31 = 4/11;
p32 = 5/11;
p33 = 2/11;

% 状态转移矩阵
P = [p11 p12 p13; p21 p22 p23; p31 p32 p33];

得到状态转移矩阵为:

[ 0.2000 0.4667 0.3333 0.5385 0.1538 0.3077 0.3636 0.4545 0.1818 ] \begin{bmatrix} 0.2000 & 0.4667 & 0.3333 \\ 0.5385 & 0.1538 & 0.3077 \\ 0.3636 & 0.4545 & 0.1818 \end{bmatrix} 0.20000.53850.36360.46670.15380.45450.33330.30770.1818

以 1989 年的收成状态为初始状态,计算往后 10 年的收成状态概率分布:

% 初始状态
x0 = [0 0 1];
% 往后 10 年的收成状态概率分布
x = zeros(11, 3);
x(1, :) = x0;
for i = 2:11
    x(i, :) = x(i-1, :) * P;
end

输出结果为:

x =
         0         0    1.0000
    0.3636    0.4545    0.1818
    0.3836    0.3223    0.2941
    0.3572    0.3623    0.2805
    0.3685    0.3499    0.2815
    0.3645    0.3538    0.2817
    0.3658    0.3526    0.2816
    0.3654    0.3530    0.2816
    0.3655    0.3528    0.2816
    0.3655    0.3529    0.2816
    0.3655    0.3529    0.2816

可以看出,往后 5 年的收成状态概率分布不断变化、逐渐稳定,到 1998 年后,收成状态概率分布收敛,得到该地区马尔可夫链的终极状态概率分布。“丰收”和“平收”状态的概率相近,而“欠收”状态的概率较低。

有关MATLAB 马尔可夫链的更多相关文章

  1. Matlab imread()读到了什么 (浅显 当复习文档了) - 2

    matlab打开matlab,用最简单的imread方法读取一个图像clcclearimg_h=imread('hua.jpg');返回一个数组(矩阵),往往是a*b*cunit8类型解释一下这个三维数组的意思,行数、数和层数,unit8:指数据类型,无符号八位整形,可理解为0~2^8的数三个层数分别代表RGB三个通道图像rgb最常用的是24-位实现方法,即RGB每个通道有256色阶(2^8)。基于这样的24-位RGB模型的色彩空间可以表现256×256×256≈1670万色当imshow传入了一个二维数组,它将以灰度方式绘制;可以把图像拆分为rgb三层,可以以灰度的方式观察它figure(1

  2. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  3. 建模分析 | 平面2R机器人(二连杆)运动学与动力学建模(附Matlab仿真) - 2

    目录0专栏介绍1平面2R机器人概述2运动学建模2.1正运动学模型2.2逆运动学模型2.3机器人运动学仿真3动力学建模3.1计算动能3.2势能计算与动力学方程3.3动力学仿真0专栏介绍?附C++/Python/Matlab全套代码?课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。?详情:图解自动驾驶中的运动规划(MotionPlanning),附几十种规划算法1平面2R机器人概述如图1所示为本文的研究本体——平面2R机器人。对参数进行如下定义:机器人广义坐标

  4. ABB-IRB-1200运动学分析MATLAB RVC工具分析+Simulink-Adams联合仿真 - 2

    一、机器人介绍        此处是基于MATLABRVC工具箱,对ABB-IRB-1200型号的微型机械臂进行正逆向运动学分析,并利Simulink工具实现对机械臂进行具有动力学参数的末端轨迹规划仿真,最后根据机械模型设计Simulink-Adams联合仿真。 图1.ABBIRB 1200尺寸参数示意图ABBIRB 1200提供的两种型号广泛适用于各作业,且两者间零部件通用,两种型号的工作范围分别为700 mm 和 900 mm,大有效负载分别为 7 kg 和5 kg。 IRB 1200 能够在狭小空间内能发挥其工作范围与性能优势,具有全新的设计、小型化的体积、高效的性能、易于集成、便捷的接

  5. 慢跑者与狗 & 地中海鲨鱼问题的matlab解法 - 2

    慢跑者与狗问题描述一个慢跑者在平面上沿椭圆以恒定的速率𝒗=𝟏跑步,设椭圆方程为:𝒙=𝟏𝟎+𝟐𝟎𝒄𝒐𝒔(𝒕),𝒚=𝟐𝟎+𝟓𝒔𝒊𝒏(𝒕)。突然有一只狗攻击他,这只狗从原点出发,以恒定速率𝒘跑向慢跑者,狗的运动方向始终指向慢跑者。分别求出𝒘=𝟐𝟎,𝒘=𝟓时狗的运动轨迹。模型建立设时刻t慢跑者的坐标为(𝑿(𝒕),𝒀(𝒕)),狗的坐标为(𝒙(𝒕),𝒚(𝒕))。则𝑿=𝟏𝟎+𝟐𝟎𝒄𝒐𝒔(𝒕),𝒀=𝟐𝟎+𝟏𝟓𝒔𝒊𝒏(𝒕),狗从(0,0)出发,建立狗的运动轨迹的参数方程:由于狗始终对准人,因而狗的速度方向平行于狗与人位置的差向量:消去𝝀,得由题意𝑿=𝟏𝟎+𝟐𝟎𝒄𝒐𝒔𝒕,𝒀=𝟐𝟎+1𝟓𝒔𝒊𝒏(𝒕),狗从(0,0)

  6. C++调用matlab函数(未安装 matlab 也可以使用) - 2

            在正常工作环境中往往是可以使用无线网络的,此时安装一个matlab也不是什么难事;但是也难免也会遇到一些工作电脑不允许链接无线网络,此时若安装一个matlab则是一件非常痛苦的事,因为其安装包就20多个G,当时我是用手机开热点下载的,仅仅下载安装包就浪费了一个下午+一个晚上;       下面就举一个例子,针对安装过matlab和未安装过matlab的情况去介绍C++调用matlab函数的操作流程:一、封装matlab函数首先把matlab代码封装成函数的形式,下面举一个简单的函数为例;functionc=myadd(a,b)c=a+b;end二、编译matlab函数具体的编译

  7. matlab中矩阵点乘和乘的区别(超级简单) - 2

    matlab中矩阵点乘和乘的区别MATLAB中,一、矩阵相乘:表示两个矩阵相乘。二、矩阵点乘:表示矩阵中对应位置的元素分别相乘。三、举例3.1矩阵相乘3.2矩阵点乘MATLAB中,一、矩阵相乘:表示两个矩阵相乘。前提条件:满足矩阵相乘的规则,即前矩阵的列数等于后矩阵的行数。二、矩阵点乘:表示矩阵中对应位置的元素分别相乘。前提条件:满足矩阵点乘的规则,即前后矩阵维度相同。三、举例3.1矩阵相乘Example1:A=[123;456]A=123456>>B=[1;2;3]B=123>>C=A*BC=1432这时如果用点乘就会报错Example2:>>A=[123;456;789]A=1234567

  8. 基于GMDH 的时间序列预测(Matlab代码实现) - 2

    目录1.GM(1,1)模型2. 组合预测模型3. GMDH进行时间序列预测4.运行结果5Matlab代码实现1.GM(1,1)模型灰色预测是一种对具有不确定因素的系统进行预测的方法,能有效解决数据少、序列的完整性及可靠性低的问题。GM(1,1)模型是一种较为常用的灰色模型,GM(1,1)预测模型的建立实质上就是对原始数据序列作一次累加生成,使生成数据序列呈显出一定规律,然后通过建立微分方程模型,求得拟合曲线,进而对系统进行预测。2. 组合预测模型灰色模型是通过对原始数据加工处理来弱化随机性的,若数据存在较大的波动性,预测出来的结果可能会存在较大误差。ARIMA模型对于预测的模型比较理想,要求时

  9. 数学建模之马尔可夫链模型详解(附详细Matlab程序) - 2

    🔗运行环境:Matlab🚩作者:左手の明天🥇精选专栏:《python》🔥推荐专栏:《算法研究》📚选自专栏:《数学建模》🧿优秀专栏:《Matlab神经网络案例分析》目前持续更新的专栏:🥇专栏:MatlabGUI编程技巧🔥专栏:Matlab从无到有系列大家好,我是左手の明天!今天和大家分享数学建模重要模型——马尔可夫链模型。在对数学建模之马尔可夫链模型进行介绍时,首先需要明确两个问题:马氏链模型用来干什么马尔可夫预测法是应用概率论中马尔可夫链(Markovchain)的理论和方法来研究分析时间序列的变化规律,并由此预测其未来变化趋势的一种预测技术。马氏链模型什么时候用应用马尔可夫链的计算方法进行马

  10. ruby - 命令行Matlab中的vi输入模式? - 2

    我的~/.inputrc中有这些行:setediting-modevisetkeymapvi这允许我在每个使用GNUreadlines进行文本输入的程序中使用vi键绑定(bind)。示例:python、irb、sftp、bash、sqlite3等.它使使用命令行变得轻而易举。Matlab不使用readlines,但vi键绑定(bind)在调试或交互工作时会惊人。有现成的解决方案吗?我倾向于在命令行中使用matlab-nosplash-nodesktop,这让我开始思考:是否可以编写一个包装器,确实使用readlines并通过matlab的输入?(如果我必须实现它,我可能更愿意在Ruby

随机推荐