|
使用するデータは、CSV形式のファイルで、3列n行あります(下の値は適当です。値は2行目から)
x y t
7.4 8.3 6.2
1.0 2.7 3.9
5.8 4.7 3.6
・
・
・
・
・
・
マクロにて入力する変数は、n, hs, htの値です。
これらの値を入力して以下の関数 f(x,y,t)=c値を求め、
(x, y, t, c)の列で別のCSVファイルに保存する
関数f(x,y,t)について関数が難しいので、何がしたいのかをかきました。
例えば、(x,y,t)は、(x1,y1,t1)から(x10,y10,t10)まであるとします。
(x1,y1,t1)の時を例に説明します。
[step1]
ΣKs[(x-xi)/hs, (y-yi)/hs]*Kt[(t-ti)/ht](Σの下にはi)
i=1の時、
[step2]u,wを変数とします
(x1-xi)/hs=u1_1,
(y-yi)/hs=v1_1,
とする
(t-ti)/ht=w1_1
とする
[step3]L,M,N,P,Qを変数とします
{(u1_1)^2+(v1_1)^2}=L1
(w1_!)^2=M1
とする
もしも、(L1)<1 ならば、
(2/π)*{1-(L1)}=N1とする
そうでなければ、N1=0とする
もしも、(M1)<1 ならば、
(3/4)*{1-(M1)}=P1とする
そうでなければ、P1=0とする
(N1)*(P1)=Q1 とする
[step4]
次に、[step1]にもどりi=2の時で[step2]→[step3]と処理する。
その結果、Q2が求まる。
これを、i=10の時まで繰り返し、
Q1〜Q10までが求まる。
[step5]
Q1〜Q10までを全部足す。
足した値に、1/{n*(hs^2)*ht} をかける。
出た値が、(x1,y1,t1)=c1である。
以上の、[step1]から[step5]まで繰り返し、(x10,y10,t10)=C10までもとめます。
C1からC10までを、
別のファイルでx,y,tの隣の列に、書き込んでいき、保存。
という流れです。
何卒よろしくお願いします。
|
|