酒器について質問です。
ある2つのポイントで計測した実験データがあります。
その2つの実験データの間の時間のずれΔtを相互相関関数を用いて求めたいと考えています。
参考書やインターネットを通して理論は理解できるのですが、それをフォートランを用いた場合どのようにして計算させるのか分かりません。
具体的のどのようにして計算したらよいのでしょうか?
どのようなプログラム文を打てばよいか教えていただきたいです。
流れとしてはデータ数1000の場合
2つのファイルをopen
データ読み込み f() g()
do p=-500,500
do i=1,1000
s=f(i)*g(i+p)
ss=ss+s
...........
のような流れになるのでしょうか?
どなたか分かる方是非教えてください
よろしくお願いします
No.1ベストアンサー
- 回答日時:
データ数が1000個ということは、
f(1), f(2), ..., f(1000)
g(1), g(2), ..., g(1000)
なのですよね?
ume3123さんのコードだと、g(i+p)の"i+p"のとる範囲が-499~1500になってしまいますよ。
相互相関関数をh(1000)とすると、
do p=式(p1), 式(p2)
h(p)=0.0
do i=式(i1), 式(i2)
h(p)=h(p)+f(i)*g(i+p)
enddo
enddo
とすればわかり易いのでは?
配列f(), g(), h()のインデックスが1~1000の範囲を逸脱しないように注意してください。
ヒント1:式(p?)には定数が入る。式(i?)にはpを使う(ただし片方だけ)。
ヒント2:1つのpに対して、h(p)=h(p)+f(i)*g(i+p)を1000回実行するわけではない。
(p=c(定数)の時、h(c)=h(c)+f(i)*g(i+c)を1000回実行するわかではないという意味です。)
がんばってください。
ありがとうございます。
do p=1,10000
do i=1,10000-p
にしたらコンパイルできて一応出力でしました。
ただ本来ピークが真ん中にくるはずらしいのですが、端のほうにピークらしきものがあり,あかしな結果になりました。
本などを読んでいるとフーリエ変換しないとダメみたいなことが書いてあって、ますます分からなくなりました(><)
実験でとった元のデータをdatファイルにして上記のようなプログラムでまわすだけは無理なんでしょうか?
No.3
- 回答日時:
ANo.1 です。
たびたびすみません。書き漏らしがありました。>ただ本来ピークが真ん中にくるはずらしいのですが、
実験データを入れる前にプログラムが正しいことを確認しましたか?
あらかじめ時間のずれがわかっているデータ(例:sinとcos)で相互相関をとってみて、
プログラムが正しいことを確認すべきですよ。
実験はStep by Stepです。
No.2
- 回答日時:
ANo.1 です。
==== Code ====
do p=式(p1), 式(p2)
h(p)=0.0
do i=式(i1), 式(i2)
h(p)=h(p)+f(i)*g(i+p-1)
enddo
h(p)=h(p)/(1000-p)
enddo
==== end of Code ====
Codeの下から2行目が抜けていました。ごめんなさい!!
この記述であってますかね?確認してください。
あと、g()もg(i+p-1)と記述すべきですね。ほぼ同じ結果になるはずですが。
indexが1から始まるプログラミング言語をしばらく扱っていない(0から始まるものが多い)
ため、他にも細かなミスがあるかもしれません。
do文については、ume3123さんの考え方でOKです。(細かなところまではわかりませんが。)
また、時間のずれを出すのに相互相関をとるという考え方も正しいはずです。
ご丁寧にありがとうございます!
なんとかできました。
ただやはり波形処理を施さないといい結果は得れそうにないのでまた検討してみます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
アクセス2000で画像データ...
-
【エクセル】測定時間がバラバ...
-
EXCELの日付に関する関数について
-
Setステートメントをまとめて記...
-
DataGridViewのデータの引渡し...
-
シリアル通信プログラム(受信...
-
関数を教えていただきたくおね...
-
ListBox間で、お互いにデータを...
-
エクセルで2つの時系列のデー...
-
チェックサムの実装方法について
-
Delphiで設定データの保存には...
-
特定のデータの抽出方法を教え...
-
Fortran カンマを含む数値デー...
-
エクセルVBAプログラミング...
-
シリアル通信でのデータ受信
-
EXCELVBAでSQLserverからデータ...
-
データの読み出しと書き込み
-
【プログラム】プログラミング...
-
C言語の並び替え
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
配列でデータが入っている要素...
-
VBA 円グラフ 特定条件に一致し...
-
メモ帳(テキストデータ)をExc...
-
EXCELVBAでSQLserverからデータ...
-
VBA 空白セルを削除ではない方...
-
S9タイプからXタイプにデータ...
-
ブレーカー落ちで壊れたりしな...
-
Accessで該当データにフラグを...
-
多量のSUMIF式を軽くしたい
-
エクセルで2つの時系列のデー...
-
VBAを使ってOutlookメール本文...
-
特定のデータの抽出方法を教え...
-
この行は既に別のテーブルに属...
-
カンマからスラッシュに
-
VBAでシートからコンボボックス...
-
GridViewの行の一部を複数行にする
-
ユーザーフォームのテキストボ...
-
<VB>String→Object
おすすめ情報