[問題] 讀取資料時用陣列表示

看板Fortran作者 (披著狼皮的羊)時間10年前 (2014/05/11 20:52), 10年前編輯推噓3(302)
留言5則, 2人參與, 最新討論串1/1
題目:在做量測的時候,時常碰到雜訊的問題,使得訊號的趨勢不很明顯,有時可以用 移動平均值使得資料曲線較平滑。假設每五個資料點取一個平均值稱為 m5值, 每 10個資料點取一個平均值就稱為 m10值。由一組連續資料的 m5值 (或m10 值) 構成的線條就是 m5 (或 m10) 移動平均線。寫一個包含Function的程式, 從 提供的檔案(moving.txt)中讀取資料,計算 m5 移動平均值並找出其中最大的 m5移動平均值為何。 我的程式碼: program hw7 implicit none real s integer n,i OPEN (UNIT=11,FILE='moving.txt',STATUS='OLD') OPEN (UNIT=21,FILE='final.txt',STATUS='NEW') n=57 do i=1,n read(11,90)s 90 format(f11.4) end do write(21,*)s end 我不知道的是如何再把資料讀取出來的時候 轉為陣列 然後來做運算 如求平均值(s(1)+s(2)+s(3)+...)/5 資料一共57筆 感謝 P幣2000贈送 給出方向的人 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.120.223.28 ※ 文章網址: http://www.ptt.cc/bbs/Fortran/M.1399812756.A.2C5.html

05/11 21:32, , 1F
把s宣告成陣列,real s(57)
05/11 21:32, 1F

05/11 21:32, , 2F
然後讀的時候就變成read(11,90)s(n)
05/11 21:32, 2F

05/11 21:32, , 3F
應該是read(11,90)s(i)
05/11 21:32, 3F
請教一下如何用functuion接收這些數值 然後每取5個算平均值 ※ 編輯: s23325522 (140.120.223.28), 05/11/2014 22:44:08

05/12 10:30, , 4F
平均值只有53筆,資料第54筆以後沒有五個數值可算滑動平均
05/12 10:30, 4F

05/12 13:34, , 5F
sum(s(a:a+b-1))/b 從a開始,拿b個數值算平均
05/12 13:34, 5F
文章代碼(AID): #1JRtAKB5 (Fortran)
文章代碼(AID): #1JRtAKB5 (Fortran)