2012-06-18 57 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估計值之間的互相關是難以計算成最終值。

相關問題