Matlab 如何汇总所有实体的属性值

Matlab 如何汇总所有实体的属性值,matlab,simulink,Matlab,Simulink,在我的模型中有一个实体生成器、一些属性函数(out\u attrName)和一个实体接收器。如何获取每个实体的所有attrName值之和?我想在每个实体到达接收器并累积该值之前获取其值 我尝试使用“累计总和”块,但没有成功。这个模块需要输入离散时间,所以我使用离散时间积分器。不能说我使用它的方式是正确的:例如,如果要求和的值是34和40,那么总和可以是12344,而不是正确的74 编辑: 示例: 考虑下面的模型:10个实体进入服务器,然后进入接收器。 有2个设置属性块: StartTime的第

在我的模型中有一个实体生成器、一些属性
函数(out\u attrName)
和一个实体接收器。如何获取每个实体的所有
attrName
值之和?我想在每个实体到达接收器并累积该值之前获取其值

我尝试使用“累计总和”块,但没有成功。这个模块需要输入离散时间,所以我使用离散时间积分器。不能说我使用它的方式是正确的:例如,如果要求和的值是34和40,那么总和可以是12344,而不是正确的74

编辑

示例:
考虑下面的模型:10个实体进入服务器,然后进入接收器。 有2个
设置属性
块:

  • StartTime
    的第一个时间(从时钟开始的当前时间,在服务器之前)
  • 第二个用于
    EndTime
    (从时钟开始的当前时间,在服务器之后)
一个
属性函数
块,用于设置
服务时间
属性=
结束时间
-
开始时间

该模型非常简单,因此
ServiceTime
属性始终等于10。我们可以在
信号范围上看到它

我们有10个实体。在每个实体中都有一个属性
ServiceTime
==10。现在我想得到所有实体的
ServiceTime
属性的总和。10*10=100. 我该怎么做


详情:







  • 似乎您的SO问题是问“如何使用Matlab获得接收器的传播延迟?”

    这篇题为《Matlab Newletter》的文章讨论了离散Simulink模型获取总延迟值的方法


    根据该时事通讯,建议使用Matlab的输入和输出之间的互相关特性,而不是常用的延迟分析估计值,因为这很难计算成最终值。

    经过一些研究,这里是我自己的答案。
    如果我在某些方面有错误,请评论这个答案

  • 我们需要一个累加器(一些存储器)来存储数据。因此我们需要使用MatLab工作空间。我们可以使用函数
    coder.extrinsic('evalin')
    coder.extrinsic('assignin')
    从中读取/写入值

  • 我们必须将来自所有实体的所有值放在一个向量中。在这个操作之后,我们将在一个地方拥有数据,并且可以做任何我们想做的事情。这个向量将由工作空间“托管”

  • 在我的例子中,通过索引分配向量元素很容易,因此每个实体都有一个ID(它是生成器中的
    #d
    值)

  • 最后,让我们将数据写入vector。在启动模型之前,在Matlab中执行以下代码:
    someVar=0(1000,1)

  • 将数据保存在下沉前的
    属性函数中
    块中:

    out_EntityDuration = FinishTime - StartTime;
    
    coder.extrinsic('evalin');
    coder.extrinsic('assignin');
    
    x = zeros(1000,1);
    x = evalin('base', 'someVar');
    
    x(Id+1) = out_EntityDuration;
    
    assignin('base','someVar',x);
    
    在此处查看有关读取/写入工作区的更多信息


    执行后,模型
    someVar
    存储数据。现在我们可以找到求和或平均值。

    我不太明白。
    attrName
    从何而来?您是否尝试过简单地将所有需要的值放在一个向量中,然后使用
    cumsum
    命令,例如?我想我在您的问题中遗漏了一些东西…@lak-b C你能举个例子吗?@ste偶attrName是实体属性的一个值。我怎样才能在模型中给向量赋值?你能解释一下你在问题的第一部分所说的这句话的意思吗:
    如果sum的值是34和40,那么总的和可以是12344,而不是正确的74。我不明白你所说的值是什么意思es求和。这是一个只有这两个值的示例吗?还是在这两个值之间有其他值?@Steeven这只是一个示例。ServiceTime仅在这个简单模型中始终等于10。在我的真实模型中,此属性的值可以等于任何值,例如:在第一个实体中attr value=14,在第二个实体中一=9,三分之一=12,依此类推。所以我必须得到每个实体,从中获取ServiceTime属性的值,并在某个accamulator中求和。但我不知道如何执行这样的操作。@arttronics这是一个答案:)我在MatLab中是noob,可能我的一些观点不那么聪明。但我的问题有完整的解决方案。谢谢r澄清您发布的答案是您使用的解决方案,并且您希望得到反馈。然后,请接受此答案,以便解决此问题。尽管如此,对于已解决的问题,很难获得反馈,因为该问题的排名与此相同。在这种情况下,发布新问题(可选参考此页面)根据您当前的流程,询问是否有更好的方法可以使用,并保留该问题,直到有更好的方法出现。我将更新您的新问题。此外,此答案+1。干杯!公平:您已经失去了200奖金,您将无法在自己的回答中收回该奖金。我建议授予该奖金在你接受你的答案后向我提问。然后在任何时候,我都会赞助你为同一个200人代表选择的任何当前或未来的问题。这样,你就不会松懈了。