matlab - 在matlab中使用持久变量线程化或激活函数
问题描述
Matlab 中有没有办法在同一个循环中使用具有持久变量的同一个函数两次?
这个想法是使用卡尔曼滤波器的通用函数(依赖于持久变量)来分别估计两个系统,而无需复制和重命名卡尔曼滤波器函数。一些语言(例如 G/LabVIEW)允许定义函数是否应该在不同的线程中调用,并且;因此,复制它的一个实例,这有效地分离了持久变量。但是,Matlab 大多只是单线程。我希望这样的命令subplot()
可以激活函数的不同实例。
我附上了一个没有目的的虚拟示例(我很清楚这可能是向向量添加常数因子的最愚蠢的方法;))
function [i1,i10] = testThredPers()
% test function calling a local function with persistent variables twice
% number of calles | USER
num = 13;
% allocate memory
i1 = NaN(num,1);
i10 = NaN(num,1);
% clear persistent variables
clear pers
% looping
for i = 1:num
% 1st call of function with persistent variables
i1(i) = pers(i,1);
% 2nd call of function with persistent variables
i10(i) = pers(i,10);
end
end
%% --------- LOCAL FUNCTIONS --------- %
function out = pers(x,lcl0)
% function with persistent variables
persistent lcl
if isempty(lcl)
lcl = lcl0;
end
out = x*lcl;
end
解决方案
推荐阅读
- php - 将 phpmyadmin 的用户分配给 MySQL 查询中的数据库
- user-interface - 通过自动化打开的应用程序的 UI 布局问题
- azure-storage - Azure 存储臂模板的标识属性是什么?
- c# - 如何从 Owin 服务器中删除移动设备用户的令牌
- java - Selenium + Java 的 elementToBeClickable 问题
- git - Git:如何在没有壁球的情况下修复合并
- google-sheets - 拆分阵列清理
- jenkins - 使用 curl 使用自定义工作区和字符串参数触发 jenkins 作业
- java - 如何从 maven 插件中获取 java 目标版本
- python-3.x - AttributeError: 'Turtle' 对象没有属性 'pencolour'