matlab中的递归函数

2023-12-23

我如何在matlab中编写递归函数,它基本上是一个马尔可夫链! 我尝试为它编写一个伪代码,并且是新的MATLAB:

该函数是这样的:

   P= Probability
    x= status(0,1)
    Dij= probability to pick a site
    P(Status of Site(i) being x at next time step)= Summation[P(Status of Site(i) being x   at previous time step)*Dij]

我已经尝试过代码,谁能告诉我它是否正确:

 function [t,index]= CopyingInfluenceModel
%%Define constants
StatusP1=rand(1,0);
StatusP0=rand(1,0);

% Initializing the variables
t=[];
index=[];
i=[];
%assigining the initial conditions
t(1)=0;
%set index no i to 1(initial condition for i=1)
i=1;
%% If the probability is zero, terminate while loop
while p(i)>=0
%calculate time step for given index no
t(i+1)= t(i);
%calculate the status_probability at given time t=(i+1)
StatusP1(i+1)=StatusP1(i)+sum(StatusP1(i)*Dij);

%index i increases by 1 to calculate next probability
i=i+1;
end
end

首先是 matlab 中的递归“Hello World”阶乘函数:

function result=f(x)
if (x<=0)
    result=1;
else
    result=x*f(x-1);
end

end

可以这样调用:

>> f(4)
ans =
    24

对马尔可夫链了解不多,我在这里猜测你的函数应该做什么。首先是代码:

function yourmainscript
    % state 1 -> state 1: 50%
    % state 1 -> state 2: 50%
    % state 2 -> state 1: 25%
    % state 2 -> state 2: 75%
    D=[0.5 0.5; 0.25 0.75];
    p0=[1; 0];

    % Get probability that the system is in state number 1 at time step number 4
    % given the transition matrix D and the initial probabilities p0
    P(1,4,D,p0)
end

function result=P(state, t, D, p0)
if t==0
    result=p0(state);
else
    possible_states=(1:length(D))';
    result=D(state,:)*arrayfun(@(x) P(x, t-1, D, p0), possible_states);
end
end

参数 D 和 p0 描述了系统并且未经修改地直接传递。使用全局变量或使用函数嵌套也适用于它们,只要它们可以访问。

state 是 1 到您处理的状态总数之间的整数,t 是表示时间步长的整数。

在 t==0 时,我们可以使用状态作为 p0 的索引来获得概率。 对于 t>0,我将总和重写为矩阵乘法:

我们需要 Dij 行(即由当前状态给出的 D(state,:) ),并将其与最后一个时间步中所有可能状态的概率向量相乘。

The line

possible_states=(1:length(D))';

是包含 1,2,3,...,最后状态的列向量,并且在下一行中需要。 Arrayfun 为数组的每个元素(第二个参数)调用一个函数(第一个参数),并将结果填充到一个向量中。第一个参数是定义以下函数的简写:

function result=wrapperfunction(x)
    % Assume t, D and p0 are in scope and the function P is known
    result=P(x, t-1, D, p0);
end

请注意,matlab 区分大小写,因此,如果您定义函数“Markov”,那么 matlab 现在仍然不支持“markov”。

编辑:抱歉,在我撰写此答案时您已经更新了代码,因此它可能适用也可能不适用于更新的版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matlab中的递归函数 的相关文章

  • MATLAB:MEX 矩阵除法给出的结果与 m 文件不同

    我使用 MATLAB 的编码器工具创建了矩阵指数函数的 MEX 版本 以在另一组函数中使用 问题是 MEX 版本给出的结果与原始 m 文件不同 经过调试 我认为这是因为MEX文件和m文件没有做相同的矩阵除法 或者 MEX 文件首先就有问题
  • 在 Matlab 中将绘图从高斯混合变换为均匀分布

    考虑以下抽签2x1Matlab 中的向量 其概率分布是两个高斯分量的混合 P 10 3 number draws v 1 First component mu a 0 0 5 sigma a v 0 0 v Second component
  • 覆盖 MATLAB 默认静态 javaclasspath 的最佳方法

    MATLAB 配置为在搜索用户可修改的动态路径之前搜索其静态 java 类路径 不幸的是 静态路径包含相当多非常旧的公共库 因此如果您尝试使用新版本 您可能最终会加载错误的实现并出现错误 例如 静态路径包含 google collectio
  • 有没有办法在 MATLAB 中查看 pcode 文件 (.p) 的源代码?

    有没有办法在 MATLAB 中打开 pcode 文件 p 如果 开放 是指edit 那么当然不是 pcode 中的 p 代表 受保护 其主要设计目标是在保护其源代码的同时部署功能组件 如果 开放 是指run 那么当然是的 引用手册 http
  • 如何将条形图的 XtickLabels 向左移动?

    我目前正在尝试创建频率直方图 为此 我必须创建一个条形图 条形图之间没有空格 然而 这集中于XTickLabels在酒吧的中间 由于它是一个直方图 我希望数值位于每个条形之间的线上 以便它可以直观地指示间隔 本质上 我需要将所有刻度标签移至
  • 如何在 Alloy 中构建递归谓词/函数

    我试图在 Alloy 中生成两组类 例如重构之前的类 重构应用程序后的应用程序和类 假设在第一组中我们有以下类 ALeft gt BLeft gt CLeft Class1 Class2 gt Class3 gt Class4 这意味着 A
  • 图像堆栈的最大强度投影

    我正在尝试重新创建该功能 max array 3 来自 MatLab 它可以获取 N 个图像的 300x300px 图像堆栈 我在这里说 图像 因为我正在处理图像 实际上这只是一个大的双数组 300x300xN 并创建一个 300x300
  • 如何在 MATLAB 中可视化球体的交集?

    似乎这个问题在一些地方被问过 包括SO https stackoverflow com questions 35130336 draws the intersecting volume of two spheres in matlab 我最
  • 如何从邻接列表构建嵌套树结构?

    考虑到我有 名为的相邻键 子级 父级 列表A 一个名为Tree存储自己的节点键 整数 和子节点 类 A 61 66 50 61 68 61 33 61 57 66 72 66 37 68 71 33 6 50 11 37 5 37 clas
  • 如何让MCR启动时间快

    我将 matlab 程序转换为 net 程序集 即 dll 文件 我制作了一个控制台 C 应用程序 添加了 dll 文件并从 php 调用它 每次调用 exe 时都会调用 MCR 如何使 MCR 在服务器启动时初始化 并且即使在一段时间后调
  • matlab mex 文件和 C++ dll (Windows)

    我有一个带有 Test 类的 DLL 标题 class MY EXPORT Test public int doit const string str 和来源 int Test doit const string str return in
  • 在 MATLAB 中使用 FFT 的频率响应

    这是场景 使用频谱分析仪 我有输入值和输出值 样本数是32000采样率为2000样本 秒 输入是正弦波50 hz 输入为电流 输出为压力 单位 psi 我如何使用 MATLAB 根据这些数据计算频率响应 使用 MATLAB 中的 FFT 函
  • 在 MATLAB 中检索 spfun、cellfun、arrayfun 等中的元素索引

    有什么办法可以找回index调用函数的元素的cellfun arrayfun or spfun行为 即检索函数范围内元素的索引 为了简单起见 假设我有以下玩具示例 S spdiags 1 4 0 4 4 f spfun x 2 x S 它构
  • Matlab:如何显示数组的“真实”值?

    我有一个在脚本中计算的向量 计算后 我将值显示到命令窗口 显示如下 finalResults 1 0e 05 0 0001 0 0 0005 0 0002 0 0001 0 0027 0 0033 0 0001 0 0000 0 0000
  • 计算数组中接下来的 n 个元素的乘积

    我想计算下一个的乘积n矩阵的相邻元素 号码n要相乘的元素数应在函数的输入中给出 例如 对于此输入 我应该从第一个开始计算每 3 个连续元素的乘积 p ind max product 1 2 2 1 3 1 3 这给出了 1 2 2 2 2
  • MATLAB 中时间戳过滤器的优化 - 处理非常大的数据集

    我正在 MATLAB 中编写一个程序 必须使用 MATLAB 并且不能真正使用 MEX 来过滤大量数据 我需要实现的过滤器之一要求我将时间戳向量与其他时间戳不会出现的已知 不良 时间列表进行比较 一个典型的时间戳向量有大约 2 000 00
  • MATLAB 中最有效的矩阵求逆

    在 MATLAB 中计算某个方阵 A 的逆矩阵时 使用 Ai inv A should be the same as Ai A 1 MATLAB 通常会通知我这不是最有效的求逆方法 那么什么是更有效率的呢 如果我有一个方程系统 可能会使用
  • 在另一列中添加具有特定条件的一列,如 excel 的 sumif

    我有一个像这样的矩阵 A 1 2 2 3 3 4 4 5 5 6 6 8 7 9 8 5 9 4 现在我想添加第二列 条件是如果 limit 0 interval 3 且 limit limit interval 或者换句话说 当第 1 列
  • Python 函数句柄 ala Matlab

    在 MATLAB 中可以创建function handles http www mathworks co uk help techdoc ref function handle html与类似的东西 myfun arglist body 这
  • Simulink 仿真引擎如何工作?

    我想了解 Simulink 仿真引擎的工作原理 它是否使用离散事件模拟机制 那么如何处理连续时间 它是否依赖于基于静态循环的代码生成 或者 在第一个周期之前 它会计算出块的执行顺序 从不需要任何其他块输入的块开始 每个周期 它都会根据输入和

随机推荐

  • extjs解析模板中嵌套的json

    尝试 未成功 显示嵌套 json 中的数据 JSON 可能看起来像 contacts id 1 client id 135468714603 addresses id 1 contact id 1 address id 16 address
  • R中magrittr和arima的兼容性问题

    考虑以下示例 library tidyverse set seed 1 forecast forecast x lt cumsum rnorm 10 y1 lt arima x order c 1 0 0 y2 lt x gt arima
  • 保存模型会破坏一对多关系

    当我保存一个父对象 其中有许多子对象 时 这种关系似乎被破坏了 这Ember 文档 http emberjs com guides models persisting records 在这个问题上保持沉默 我需要做什么才能使父对象仍然显示子
  • JavaScript 中 += 和 =+ 的区别

    我想知道为什么运行第三行代码后的结果是a is 5 a 10 b 5 a b 尴尬的格式 a b 相当于 a b And b只是一种奇特的铸造方式b编号 如下所示 var str 123 var num str 您可能想要 a b 相当于
  • Nginx server_name regexp 不能作为变量使用

    有人告诉我为什么我仍然遇到这样的错误吗 Restarting nginx emerg unknown domain name variable configuration file etc nginx nginx conf test fai
  • Dapper MultiMap 不适用于具有 NULL 值的 splitOn

    我在尝试在包含以下内容的列上进行拆分时 在 dapper 中遇到了 MultiMaps 的问题NULL Dapper 似乎没有实例化对象 我的映射函数接收到null而不是对象 这是我的新测试 class Product public int
  • 响应宽度 Facebook 页面插件

    Facebook 推出了新的页面插件来取代 Like 框插件 文档 https developers facebook com docs plugins page plugin https developers facebook com d
  • 在 Highcharts 股票图表上将最后一点的值显示为标签或工具提示

    我在一张股票图表 HighCharts 中有多个不同比例的数据系列 我想将每个系列连接到它的轴或显示每个系列的最后一个点的值 类似于数据标签 但仅适用于每个系列的最后一个点 function container highcharts cha
  • 如何在 contenteditable div 中输入时创建一个段落?

    我正在为我的一个项目制作一个简单的编辑器 我需要使用可编辑的 div 使用contenteditable财产 我需要两个功能 输入两次后自动插入小时 创建一个段落而不是 br 进入并专注于它 所以我写了这个 带着一些灵感 这是负责的代码的一
  • 如何将 EditTextPreference 限制在范围 1024:65535

    我有一个 EditTextPreference 定义为
  • missModalViewControllerAnimated 非原子的?

    看来我有一个奇怪的时间问题 我打开 uiimagepicker 作为模态视图 当用户选择图像或我想要拍摄图像时 将其保存到变量中 然后以模态视图打开电子邮件界面 我的问题是 我在图像选择器上调用dismissModalViewControl
  • Visual Studio 2017 和 SAP Crystal Reports

    我已经下载并安装了视觉工作室 2017 社区之后我下载并安装了Crystal Report 支持包 20 v 13 0 20 2399 我打开了视觉工作室2017并创建一个新项目 然后右键单击我的项目 然后单击添加项目 我寻找水晶报告 rp
  • 提升文件末尾序列化

    我使用 Boost 将多个对象序列化为二进制存档 当从 a 读回这些对象时binary iarchive 有没有办法知道存档中有多少对象 或者只是检测存档结尾的方法 我发现的唯一方法是使用 try catch 来检测流异常 提前致谢 我可以
  • ggplot:如何根据相对于绘图宽度的边距来换行标题文本

    当使用绘图时ggplot2 如何将标题文本换行以适应相对于绘图整个宽度的边距 library ggplot2 library stringr my title lt c reltively long sentences that norma
  • 在 Objective-C 框架中使用 Swift 闭包

    我正在使用 MCSwipeTableViewCell 框架来实现可滑动的 tableviewcell 内的完成块之一cellForRowAtIndexPath函数看起来像这样 cell setSwipeGestureWithView che
  • 在 Xamarin Forms 中加载查看内容时显示活动指示器

    有没有办法在页面内容视图渲染或加载时显示活动指示器 我问这个是因为当我在页面中有很多控件并且我想导航到该页面时 需要几秒钟的时间到页面 所以我想知道是否有一种方法可以即时导航页面 并且当页面出现时显示加载内容的活动指示器 以及当内容加载时显
  • JavaFX的任务似乎消耗异常。这是一个错误还是一个功能?

    考虑这段代码 Thread setDefaultUncaughtExceptionHandler Thread t Throwable e gt System out println An exception occurred set th
  • 如何取消并重新启动 C# 任务 [重复]

    这个问题在这里已经有答案了 我有一个长时间运行 长时间间隔的轮询过程 我需要能够强制更新并重新启动轮询 我想到的最明显的事情是取消轮询任务 并开始一个新的任务 因为初始循环总是更新 我试图找出最好的方法来做到这一点 使用 Operation
  • 搜索 API 中的模糊搜索

    Azure 搜索 api 提供了一个模糊参数来提供建议 像这样 https blssuggestions search windows net indexes cities docs suggest api version 2015 02
  • matlab中的递归函数

    我如何在matlab中编写递归函数 它基本上是一个马尔可夫链 我尝试为它编写一个伪代码 并且是新的MATLAB 该函数是这样的 P Probability x status 0 1 Dij probability to pick a sit