2012-06-18 87 views
3

在我的模型中有一个实体生成器,一些属性function(out_attrName)和一个实体接收器。我如何获得每个实体的所有attrName值的总和?我想在每个实体到达汇点之前获得它的价值并积累这个值。如何汇总所有实体的属性值

我试图使用'累计和'块,但没有运气。该块需要输入的离散时间,所以我使用离散时间积分器。不能说我用它在正确的方法:例如,如果值要总结是34和40,总和可以像12344,而不是正确的74

编辑一些事情:

例:
考虑以下模型:10个实体去服务器,然后去接收器。
有2个Set attribute块:

  • 第一个为StartTime(从时钟当前时刻,服务器之前)
  • 第二个用于EndTime(从时钟当前时刻,服务器之后)

一个Attribute function块设置ServiceTime属性= EndTime-StartTime
该模型非常简单,所以ServiceTime属性总是等于10.我们可以在Signal scope上看到它。
我们有10个实体。在每个实体中都有一个属性ServiceTime == 10.现在我想要获得所有实体的ServiceTime属性的总和。 10 * 10 = 100。我怎么做?


详情:

  1. Model
  2. Set attribute 1
  3. Server
  4. Set attribute 2 & Script function
  5. Get attribute
+2

我不太明白。 'attrName'从哪里来?你是否试过简单地将所有期望的值放入一个向量中,然后使用'cumsum'命令,例如?我想我错过了你的问题... – Steeven

+0

@ lak-b你能举个例子吗? –

+0

@EitanT帖子已更新。 –

回答

1

经过这里的一些研究是我自己的答案,适合我。
如果我在某一点上有错,请评论这个答案。

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

  2. 我们必须将所有实体的所有值放在单个向量中。在这个操作之后,我们将在一个地方收集数据,并且可以做我们喜欢的任何事情。这个矢量将被工作空间“托管”。

  3. 在我的情况下,很容易通过索引分配矢量元素。所以每个实体都有一个ID(这是生成器的#d值)。

  4. 最后,让我们写数据向量。在Attribute function块片前右
    someVar = zeros(1000,1)

保存数据:在开始的模型前,在Matlab执行该代码

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); 

查看更多有关的读/写在这里工作区http://www.mathworks.com/matlabcentral/newsreader/view_thread/263578

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

+0

@arttronics这是一个答案:)我在MatLab noob,可能是我的一些点并不那么聪明。但是我的问题有完整的解决方案。 –

+0

感谢您澄清您发布的答案是您使用的解决方案,并且您希望对此提供反馈。那么请接受这个答案吧,这个问题就解决了。这就是说,获得解决问题的反馈很困难,因为这个问题的排名如此。在这种情况下,请在当前流程中发布一个新问题(可选参考本页),并询问是否有更好的方法可供使用,并让问题保持打开状态,直到有更好的方法出现为止。我会补充你的新问题。此外,此答案的+1。干杯! – arttronics

+0

**公平性:**您已经失去了200美元的赏金,并且您无法通过自己的回答为自己收回。我建议你在接受你的答案后给予我赏金。然后在任何时候,我将赞助任何**当前**或**未来** SO问题,你选择相同的200代表。这样,你不会松懈。 – arttronics

0

看起来像你的SO问题要求“如何用Matlab来获得接收器的传播延迟?”

Matlab的Newletter文章,题为Determining Sample Propagation Delay through a Discrete System讨论在获取的总延迟值要用于离散Simulink模型的方法。

根据该通讯,建议以“使用的输入和输出特征的 Matlab的代替延迟因为该共用analystic估计值之间的互相关是难以计算成最终值。

相关问题