Re: 關於資料存取的問題?
|
||||
---|---|---|---|---|
高級會員
|
嗯 這樣做的確不錯
不過我還想問的是 如果資料是一筆一筆的進入 例如總共有1000筆資料 我每一筆新的資料進來,要跟他前九筆資料做平均 1,2,3,4,5,6,7,8,9 第十筆進入 1,2,3,4,5,6,7,8,9,10 1+2+3+4+5+6+7+8+9+10=55 第十一筆進入 2,3,4,5,6,7,8,9,10,11 則與前九筆數的總和為=55-1+11=65 第十二筆進入 3,4,5,6,7,8,9,10,11,12 則與前九筆數的總和為=65-2+12=75 以此類推 ........... 當然這是範例,至於真實的數就沒有這麼漂亮了 不會有等差或等比的情形產生,沒辦法用偷吃步的辦法 這樣做的目的是只取前一分鐘的值與目前的值做平均。 像如果是要這樣做,因為是以十筆資料做一次平均,以我的想法就是要紀錄每一次的值,然後在下一筆資料進來時,把最先的那筆資料減去,在加入新的資料,去做平均,這樣的話就必須要紀錄每一次的值才能夠把最前面的值給減去 例如 1+2+3+4+5+6+7+8+9+10=55 當第11筆資料進入則先把 55-1=54 54+11=65 65/10=6.5 可是如果我是要三千筆資料做一次平均,那我不就要紀錄三千筆的資料才能知道最前面那筆資料的值,不然就沒辦法做減去這個動作 如果不這樣做 我真的想不到有什麼方法了呢 請各位先進幫我解答這個難題,多謝
發表於: 2006/9/27 16:09
|
|||
|
Re: 關於資料存取的問題?
|
||||
---|---|---|---|---|
高級會員
|
沒必要 收齊3000筆再平均...
假設現在要收齊十筆資料再平均,有10 byte 能放 1+2+3+4+5+6+7+8+9+10=55 55/10=5.5 假設現在要收齊十筆資料再平均,但是只有5 byte 能放 1+2+3+4+5=15 15/10=1.5 6+7+8+9+10=40 40/10=4.0 =>1.5+4.0=5.5 假設現在要收齊十筆資料再平均,但是只有3 byte 能放 1+2+3=6 6/10=0.6 4+5+6=15 15/10=1.5 7+8+9=24 24/10=2.4 10/10=1 =>0.6+1.5+2.4+1=5.5 這樣做也有一個好處,不用一次處理太量資料,浪費太多時間。 要很精確的話小數點是必然的…所以建議用c 可能比較好寫,asm的話處理小數點就比較麻煩了,可以參考教材實作…。
發表於: 2006/9/27 11:22
|
|||
|
Re: 關於資料存取的問題?
|
||||
---|---|---|---|---|
版主
|
你的RAM影這麼大嗎?
發表於: 2006/9/27 9:54
|
|||
|
關於資料存取的問題?
|
||||
---|---|---|---|---|
高級會員
|
請問各位先進該如何思考以下的這個流程?
有一個資料讀取的動作,資料不斷的由外部一筆一筆的送入,若欲把這些資料的前一分鐘的值做平均(每三千筆),該如何來做。 也就是說如果資料每20ms讀取一次,並且與前2999次的資料加在一起除以60sec,做一次平均值,而當下一筆資料(又過了20ms)進來時,而必須把的最初的第一筆的資料給捨去,加入新進的一筆資料,在做一次平均,有點像是fifo的方式,以此類推,請問有什麼方法,可以在不用到3000筆資料的暫存器,且運算速度不超過20ms的方式來完成?
發表於: 2006/9/26 14:10
|
|||
|