Để tính độ trễ thiết bị, chúng tôi tiến hành tính độ lệch giữa giá trị TEC tính toán theo công thức 1 trong trường hợp chưa hiệu chỉnh độ trễ cầu cho tất cả các vệ tinh nhìn thấy.. Các c
Trang 1VIỆN VẬT LÝ ĐỊA CẦU
CÁC SẢN PHẨM CỦA ĐỀ TÀI
ỨNG DỤNG CÔNG NGHỆ VŨ TRỤ ĐỂ NGHIÊN CỨU ĐÁNH GIÁ ẢNH HƯỞNG CỦA TẦNG ĐIỆN LY VÀ TẦNG KHÍ QUYỂN TỚI ĐỘ CHÍNH XÁC KHI SỬ DỤNG TÍN HIỆU VỆ TINH
Ở KHU VỰC VIỆT NAM
CODE LẬP TRÌNH CHƯƠNG TRÌNH XỬ LÝ SỐ LIỆU, MÔ PHỎNG VÀ CÁC BÀI BÁO, BÁO CÁO
HỘI NGHỊ
CNĐT : LÊ HUY MINH
9057-1
HÀ NỘI – 2011
Trang 2VIỆN KHOA HỌC VÀ CÔNG NGHỆ VIỆT NAM
VIỆN VẬT LÝ ĐỊA CẦU
CHƯƠNG TRÌNH KHOA HỌC CÔNG NGHỆ VŨ TRỤ
BÁO CÁO CHUYÊN ĐỀ
“Xây dựng chương trình tính toán nồng độ điện tử tổng cộng tầng
điện ly”
Thuộc đề tài cấp nhà nước “Ứng dụng công nghệ vũ trụ để nghiên cứu đánh giá ảnh hưởng của tầng điện ly và tầng khí quyển tới độ chính xác khi sử dụng tín hiệu vệ tinh ở khu vực Việt Nam”
Những người thực hiện: ThS Trần Thị Lan
TS Rolland Fleury
TS Lê Huy Minh ThS Nguyễn Chiến Thắng
HÀ NỘI, 12-2008
Trang 3Mở đầu
Tầng điện ly được xem là một môi trường tán xạ đối với các tín hiệu
vệ tinh GPS, gây ra độ trễ nhóm và sự sớm pha khi các sóng radio truyền từ
vệ tinh GPS tới các máy thu trên mặt đất Mỗi vệ tinh GPS truyền thông tin
cách phân tính sự khác nhau giữa các phép đo code và sự khác nhau giữa các phép đo pha của hai tần số sẽ cho phép rút ra thông tin về nồng độ điện tử tổng cộng (TEC) của tầng điện ly từ số liệu GPS hai tần số
Phương pháp tính TEC đã được giới thiệu nhiều trong các bài báo quốc tế và cũng đã được giới thiệu chi tiết ở tạp chí trong nước [1, 3, 4, 5, 6,
đo hiệu pha và hiệu giả khoảng cách giữa hai tần số như được trình bầy theo công thức dưới đây:
3 40
1
1 2 2 2 2 1
2 2 2 1
i k k
i k
P TEC
1
2 1 2 2 2 1
2 2 2
i k i k
chỉ số k, i tương ứng cho thông tin thu được từ vệ tinh thứ k và máy thu thứ
i,
TEC là giá trị nồng độ điện tử tổng cộng dọc theo đường truyền của tín hiệu,
Trang 4k
Phương trình (1) chính là phương pháp tính TEC từ các phép đo giả khoảng cách, còn phương trình (2) là từ các phép đo pha Ta thấy rằng để xác định TEC theo phép đo pha thì phải xác định được tham số mù mờ pha ban đầu
ta không thể suy ra một cách trực tiếp giá trị TEC tuyệt đối từ số liệu GPS một thời kỳ Để tách TEC ra khỏi các tham số độ lệch thiết bị hoặc các thông
số pha ban đầu chưa biết, người ta buộc phải xử lý số liệu trong khoảng thời gian dài hơn
Ngoài hai phương pháp trên, còn một phương pháp nữa cũng được dùng để tính TEC đó là sử dụng kết hợp cả phép đo pha và phép đo hiệu khoảng giả có thể tham khảo thêm trong [3]
Từ các nguồn tài liệu đã chỉ ra rằng nếu chỉ sử dụng phép đo giả khoảng cách sẽ cho độ chính xác vài dm tới 1m, vì các phép đo code này là
rõ ràng nhưng còn chứa độ trễ nhóm gây bởi thiết bị (máy thu + vệ tinh), để thu được TEC tuyệt đối (1) thì cần phải xác định độ trễ nhóm vi phân của máy thu và vệ tinh Nếu chỉ sử dụng phép đo pha hai tần số (2) thường cho
độ chính xác tốt hơn, chỉ khoảng mm nhưng còn chứa tham số mù mờ pha ban đầu [1, 11] Bản thân vấn đề về lời giải các tham số mù mờ pha ban dầu cũng là cả một lĩnh vực nghiên cứu lớn, thường dựa vào các giả thiết có tính chất thống kê Để xác định được chính xác các thông số này cũng là những vấn đề phức tạp và khó khăn Vì vậy phương pháp (1) chỉ sử dụng các phép
đo khoảng giả thường được sử dụng và được khuyên nên dùng để tính giá trị tuyệt đối TEC
Trang 5Do độ trễ nhóm vẫn còn chứa độ trễ thiết bị, để thu được TEC thì các
độ trễ này phải được loại bỏ Trong hầu hết các trường hợp, các độ trễ thiết
bị phải được tính đến, nếu bỏ qua độ trễ này sẽ gây ra một sai số tương đối lớn trong phép đo TEC (1ns=2.853 TECU) Độ trễ của vệ tinh được thông
http://www.aiub.unibe.ch/download/code/, còn độ trễ máy thu ta phải tự tính toán Cũng có một vài phương pháp tính độ trễ máy thu đươc công bố bởi các tác giả khác nhau khi ứng dụng để xử lý cho các trạm thu trong vùng nghiên cứu, và cho một số trường hợp cụ thể [ 2, 3, 4, 5, 6, 13] Trong phương pháp tính TEC của chúng tôi sẽ giới thiệu ở đây, chúng tôi sử dụng phương pháp hiệu khoảng giả (1) cùng với những ưu nhược điểm như đã được nêu ra Để tính độ trễ thiết bị, chúng tôi tiến hành tính độ lệch giữa giá trị TEC tính toán theo công thức (1) trong trường hợp chưa hiệu chỉnh độ trễ
cầu cho tất cả các vệ tinh nhìn thấy Do giá trị TEC suy ra từ mô hình với khoảng thời gian 15 phút một giá trị vì vậy các giá trị TEC mô hình tương ứng với khoảng thời gian 1 phút sẽ được nội suy để so sánh với các giá trị TEC tính toán Các cặp giá trị độ lệch được tính cho tất cả các cặp máy thu -
vệ tinh (mỗi trạm thu sẽ có 32 cặp giá trị tương ứng với 32 vệ tinh) và cho tất cả các phút trong ngày quan sát Các cặp giá trị độ lệch tương ứng của ngày sẽ là các giá trị median ngày của tất cả các phút tính được Do đó các cặp giá trị độ trễ thiết bị (vệ tinh + máy thu) sẽ là các giá trị median tháng độ lệch của tất cả các ngày trong tháng, và các cặp giá trị này sẽ được sử dụng
để tính TEC tuyệt đối cho mỗi cặp (vệ tinh+máy thu) và cho cả tháng Để kiểm tra độ trễ gây bởi máy thu, ta có thể tính giá trị độ trễ median tháng của mỗi vệ tinh, sau đó lấy giá trị độ trễ thiết bị tổng tính được trừ đi giá trị này
Trang 6Vì số liệu GPS chỉ cung cấp các phép đo TEC nghiêng dọc theo đường đi của tia sáng truyền từ vệ tinh tới máy thu Do đó cần phải có một phép chuyển đổi TEC nghiêng về TEC thẳng đứng (TECV) tại điểm cắt dưới tầng điện ly Để chuyển TECV từ TEC nghiêng thì tầng điện ly được cho là một lớp mỏng bao quanh Trái Đất và tâm của nó trùng với tâm của Trái đất như được mô phỏng bởi mô hình lớp đơn ở chiều cao H thường được lấy là
350, 400 hoặc 450 km, tương ứng xấp xỉ với độ cao của cực đại mật độ điện
tử
H ình 1, Mô hình lớp đơn tầng
điện ly
đất và H là độ cao lớp đơn
Yếu tố nghiêng tại độ cao H được xác định như là nghich đảo cosin góc
thiên đỉnh tại điểm cắt dưới tầng điện ly như sau:
R z
H R
R
Với là góc ngẩng của vệ tinh tại vị trí máy thu Như vậy TECV tương ứng chính là TEC nghiêng được chuyển đổi bằng cách chia cho yếu tố nghiêng:
Trang 7sẽ được trình bày trong phần sau của đề tài
Nội dung chương trình tính toán TEC
Toàn bộ chương trình tính được viết bằng ngôn ngữ Matlab gồm 22 trang, được chia thành hai bước chạy chính tương ứng với 2 chương trình lớn và một file đường dẫn Với các bước thực hiện được chỉ ra như trong sơ
Spline, Split
Trang 8Trước tiên chạy chương trình có tên ‘Bias_tot.m’, chương trình này là một function lớn gồm 16 chương trình con và được chia làm 2 bước:
Bước thứ nhất có tên là step 1, có nhiệm vụ tính toán các giá trị TEC cho trường hợp chưa hiệu chỉnh độ trễ thiết bị (bias (vệ tinh + máy thu) = 0) cho các cặp vệ tinh-máy thu và cho cả tháng số liệu, với các file số liệu đầu vào là: RINEX (file số liệu quan sát), yuma ( file cung cấp thông tin vệ tinh), codg (file số liệu mô hình TEC toàn cầu và độ trễ thiết bị) Các kết quả tính được ghi ra file đầu ra tương ứng cho tất cả các ngày quan sát trong tháng với các thông số như: thời gian (s), tên vệ tinh, vĩ độ điểm cắt tầng điện ly (độ), kinh độ diểm cắt tầng điện ly (độ), TEC nghiêng (TECU) và góc ngẩng của vệ tinh (độ) Trong step 1 có chứa 10 chương trình con có chức năng xử
4, Parorb: chương trình cung cấp thông tin về các tham số quỹ đạo liên quan đến mỗi vệ tinh với các thông số đầu vào thu được từ chương trình lec_alm
5, Entete: chương trình đọc các thông số đầu vào từ file số liệu quan sát RINEX như: toạ độ trạm trong hệ toạ độ XYZ, khoảng thời gian quan sát, số lượng các đại lượng quan sát được, và các giá trị tương ứng
Trang 96, Sp3: chương trình chuyển toạ độ trạm quan sát: từ hệ toạ độ XYZ sang hệ toạ độ cầu (lat, long, h) theo radian và mét
7, Icord: chương trình cung cấp vị trí vệ tinh và toạ độ điểm cắt tầng điện ly Với các thông số đầu vào là: vĩ độ, kinh độ, độ cao trạm thu và thời gian quan sát Thông số lối ra là: vĩ độ, kinh độ điểm cắt tầng điện ly, yếu tố nghiêng, góc ngẩng và góc phương vị của vệ tinh
8, Isupiono: chương trình tính toạ độ biểm cắt tầng điện ly, với thông
số đầu vào là: kinh độ và vĩ độ trạm quan sát, góc ngẩng và góc azimuth của
vệ tinh
9, Iposit: chương trình tính vị trí vệ tinh, với thông số đầu vào là vị trí trạm quan sát và đầu ra là: độ cao, kinh độ, vĩ độ của vệ tinh, khoảng cách từ trạm thu tới vệ tinh, góc ngẩng và góc azimuth
10, Lec_obs_1: chương trình xử lý file số liệu quan sát và tính các giá trị TEC nghiêng theo công thức (1) với độ trễ thiết bị chưa hiệu chỉnh
Bước thứ hai có tên là step 2, có nhiệm vụ tính toán các độ lệch giữa giá trị TEC tính được trong bước 1 và giá trị TEC của mô hình, sau đó tính các giá trị median ngày và tháng để thu được độ trễ thiết bị cho các cặp (vệ tinh-máy thu) tương ứng và ghi ra file đầu ra thứ hai chứa thông tin về độ trễ thiết bị Trong step 2 có chứa 6 chương trình con có chức năng xử lý khác nhau:
1, Sgps: chương trình chuyển đổi ngày, tháng, năm quan sát sang tuần, ngày GPS
2, Quant, Bissec: chương trình đổi ngày, tháng, năm quan sát sang ngày GPS và tính cho các trường hợp năm nhận hay không nhuận
3, Lect_ionex: chương trình rút ra bản đồ TEC khu vực từ mô hình toàn cầu cho trạm quan sát
Trang 104, TEC_ionex: chương trình tính các giá trị TEC mô hình tương ứng với kinh độ, vĩ độ trạm quan sát, nội suy chuỗi số liệu cho tất cả các phút trong ngày
5, Spline, Splint: là các hàm nội suy
6, Biais_res: chương trình tính median độ trễ thiết bị cho n ngày xử lý với đầu vào là file độ trễ median ngày
Cuối cùng chạy chương trình có tên verify.m, với các file số liệu đầu vào là file kết quả đầu ra (gồm file về thông tin TEC và thông tin độ trễ thiết bị) ở chương trình 1 Chương trình này có nhiệm vụ tính giá trị TECV tuyệt đối khi đã có thông tin về độ trễ thiết bị và vẽ giá trị TECV tính được theo chuỗi thời gian để kiểm tra
Kết quả tính toán thử nghiệm
Kết quả tính toán áp dụng bộ chương trình này được biểu diễn trên hình 1 và hình 2 với các giá trị TECV tính được cho 2 tháng tương ứng là: 5/2006 và tháng 3/2007 cho cả 3 trạm thu GPS ở Hà Nội, Huế và Hóc Môn
Trang 12
Hình 1: Biến thiên TECV trong tháng 5/2006 trên cả 3 trạm thu GPS ở Hà
Trang 13Hình 2 Biến thiên TECV trong tháng 3/2007 trên cả 3 trạm thu GPS ở Hà
Kết quả tính độ trễ thiết bị tương ứng được sử dụng để hiệu chỉnh tính giá trị
TECV tuyệt đối được trình bày trong bảng 1
Trang 14Bảng 1: Độ trễ thiết bị tại trạm Hà nội, Huế và Hóc môn cho các tháng
Trang 15Bảng 2: Độ trễ máy thu tại các trạm Hà nội, Huế và Hóc môn của tháng
Trang 17+ Độ trễ thiết bị tính toán được theo phương pháp này không thay đổi nhiều theo thời gian nhưng cần thiết phải được tính toán để hiệu chỉnh giá trị TEC cho từng khoảng thời gian riêng mà ở đây được lấy là từng tháng một
Do phương pháp xác định độ trễ thiết bị là dựa vào sự khác nhau giữa giá trị TEC của mô hình và TEC quan sát, vì vậy việc lấy giá trị median độ lệch cho cả tháng về ý nghĩa sẽ phản ánh đứng hơn tính địa phương của giá trị TEC quan sát
Ý tưởng của phương pháp xác định độ trễ thiết bị bằng cách kết hợp
độ trễ và tính riêng cho từng cặp máy thu và vệ tinh là có tính mới so với các phương pháp trước đây thường tách riêng hai giá trị này và lấy chung giá trị
độ lệch cho mỗi trạm thu Vì vậy các cặp giá trị độ trễ thiết bị cũng như là
độ lệch máy thu tách riêng chỉ có ý nghĩa tham khảo và chỉ áp dụng để hiệu chỉnh tính TEC theo phương pháp này
Trên đây mới chỉ là hai ví dụ tính toán thử nghiệm ban đầu của phương pháp Để kiểm định được tính ổn định của phương pháp và để thu được kết quả tốt thì chương trình tính cần tiếp tục được hoàn thiện thêm và
áp dụng tính toán với nhiều chuỗi số liệu, ở nhiều trạm và nhiều điều kiện địa phương khác nhau
Tài liệu tham khảo
[1] Breed A M and Goodwin G.L.,: Total electron content measurements
in the southern hemisphere using GPS satellites,1991 to 1995, Radio
Science, Vol.33 (N.6), 1705-1726, 1998
[2] Komjathy A., Sparks L., Wilson B D and Mannucci A.J.,:
Automated daily processing of more than 1000 ground-based GPS receivers for studying intense ionospheric storms, Radio Science, vol 40, 2005
Trang 18[3] Guanyi M and Takashi M.,: Derivation of TEC and Estimation of
Instrumental Biases from Geonet in Japan, Journal of the Communications Research Laboratory, Vol 49 (4), 10/2002
[4] Hernandez – Pajares M., Juan J.M and Sanz J.,: High resolution
TEC monitoring method using permanent ground GPS receivers, Geophysical reseachletters, Vol 24(13), 1643-1646, 7/1997
[5] Lê Huy Minh, A Bourdillon, R Fleury, P Lasudrie-Duchensne, Nguyễn Chiến Thắng, Trần Thị Lan, Trần Ngọc Nam, Hoàng Thái Lan,
‘Xác định hàm lượng điện tử tổng cộng tầng điện ly ở Việt Nam qua số liệu các trạm thu tín hiệu vệ tinh GPS’, Tạp chí Địa Chất Vol 296, N2, 54-62,
2006
[6] Lê Huy Minh, Nguyễn Chiến Thắng, Trần Thị Lan, R Fleury, P Lasudrie-Duchensne, A Bourdillon, C Amory-Mazaudier, Trần Ngọc Nam, Hoàng Thái Lan, ‘Ảnh hưởng của bão từ tới nồng độ điện tử tổng
cộng vùng dị thường điện ly xích đạo Đông Nam Á quan sát được từ số liệu GPS’, Tạp chí các khoa học về Trái đất Vol 29, N2, 104-112, 2007
[7] Orus R., Hernandez-Pajares, Juan M.J., Sanz J., and
Garcia-Fernandez,: Ferformance of different TEC models to provide GPS
ionospheric corrections, Journal of Atmospheric and Solar-Terrestrial Physics, 64, 205-2062, 2002
[8] Otsuka Y., Ogawa T., Saito A.,Tsugawa T., Fukao S and Miyazaki S.,: A new technique for mapping of total electron content using GPS
network in Japan, Earth Planet Space, Vol 54, 63-70, 2002
[9] Rene Warnant and Eric Pottiaux,: The increase of the ionospheric
activity as meansured by GPS, Earth Planets space, Vol 52, 1055-1060,
2000
Trang 19[10] Rama Rao, P V S., Gopi Krishna, S., Niranjan, and Prasad, D S
V V D.: Temporal and spatial variations in TEC using simultaneous
measurements from the Indian GPS network of receivers during the low solar activity period of 2004-2005, Ann Geophys., 24, 3279-3292, 2006
[11] Schaer, S., Ph D thesis "Mapping and Predicting the Earth's
Ionosphere using the Global Positioning System" , 1999
[12] Vladimer J.A., Jastrzebski P., Lee M.C., Doherty P.H., Decker D.T., and Anderson D.N.: Longitude structure of ionospheric total electron
content at low latitudes measured by the TOPEX/POSEIDON satellite, Radio Science, 34 (5), 1239-1260, 1999
[13] William Rideout, and Anthea Coster,: Automated GPS processing for
global total electron content data, GPS Solut., Doi 10.1007, 2006
Hà Nội, ngày 31 tháng 12 năm 2008
Người viết báo cáo
ThS Trần Thị Lan
Trang 20Phụ Lục
1) chuong trinh tinh TEC va do tre thiet bi
function biais_tot
% chuong trinh tinh TEC chua hieu chinh do lech may thu va ve tinh
%cho 1 thang so lieu
% voi file duong dan: b_entree_lan.txt
% 7/2008
clear all ;
clc;
step_1 % dong thu 17
step_2 % dong thu 730
% file loi vao : file Rinex (cho 1 ngay)
% : file almanacs yuma (cho 1 ngay)
% : file do tre ve tinh (cho ca thang) : duoc gan bang khong
% : do tre may thu : duoc gan bang khong
% file loi ra : file ket qua.txt, cho ra cac thong so nhu: gio UT, ve tinh,vi do
% diem cat tang dien ly, kinh do diem cat tang dien ly, TEC nghieng, goc ngang
global ecce i0 omd ra om0 ome m0 af0 af1 toe toc crs cuc cus cic cis crc den idot af2
fid5=fopen( 'b_entree_lan.txt' , 'r' ); % mo file duong dan
line=fgetl(fid5); % ten chuong trinh
mpath=fgetl(fid5); % duong dan den file dau vao Rinex
apath=fgetl(fid5); % duong dan den file almanac yuma
ipath=fgetl(fid5); % duong dan den file codg (file so lieu mo hinh TEC toan cau)
spath=fgetl(fid5); % duong dan cho file ket qua
cgps=fgetl(fid5); % ten tram thu
[A]=fscanf(fid5, '%f%f' ,[2,2]); % doc thang, nam, ngay bat dat cua thang, ngay cuoi cung cua thang can tinh
fclose (fid5); % dong file duong dan
fprintf( '%s%4.0f%6.0f%s%3.0f%7.0f\n' , 'mois/annee ' ,mois,annee, ' jours : ' ,jour_deb,jour_fin)
%
% cac thong so co dinh dau vao
%
Trang 21fprintf( '%s %s \n' , 'lecture almanach : ' ,yuma)
tabalm=lec_alm(yuma); % goi chuong trinh con tinh cho file yuma o dong 176
Trang 22if time==0, time=86400; end
% viet ra file ket qua
fprintf(fidw, '%10.3f%5.0f%10.3f%10.3f%10.3f%10.3f\n' ,time,isat,sublat,sublon,teco(isat),satele); end
% Truong trinh xu ly file yuma cho biet thong tin ve cac ve tinh
% dau vao : file dau vao yuma
% dau ra : file loi ra la cac thong so lien quan cua ve tinh
fide=fopen(yuma);
Trang 23% -function rien = parorb(tabalm,isat)
% cac tham so quy dao cua ve tinh
% dau ra : cac tham so chung cho chuong trinh
Trang 24global ecce i0 omd ra om0 ome m0 af0 af1 toe toc crs cuc cus cic cis crc den idot af2 ecce=tabalm(01,isat);
% -function [xx,yy,zz,ient,ir,inter] = entete(fid5)
% ham doc cac thong so tu file so lieu dau vao Rinex
elseif (c20(1:11)== 'APPROX POSI' )
% toa do tram trong he toa do carter
xx=str2num(c60(01:14)); yy=str2num(c60(15:28)); zz=str2num(c60(29:42)); possta=sp3(xx,yy,zz);
slat=possta(1); slon=possta(2); salt=possta(3);
elseif (c20(5:18)== 'TYPES OF OBSER' )
% cac thong so quan sat duoc
Trang 25elseif (c20(1:13)== 'TIME OF FIRST' )
% doc thong so thoi giam (nam - thang - ngay - gio - phut - giay)
% dau vao : rlat = vi do tram theo rad (duoc tinh trong file entete.m)
% rlon = kinh do tram theo rad (duoc tinh trong file entete.m)
% xhh = do cao cua tram theo m (duoc tinh trong file entete.m)
% rtime = thoi gian ngay theo s (duoc tinh trong file lec_obs.m)
% dau ra : sublat = vi do diem cat tang dien ly theo do
% sublon = kinh do diem cat tang dien ly theo do
Trang 26% obve = yeu to nghieng/thang dung
% satele = goc ngang theo do
%%%% ham tinh toa do diem cat tang dien ly
% khi da biet cac thong so nhu: kinh vi do cua tram va goc ngang, goc azim
% ham tinh kinh do, vi do va do cao theo rad cua tram
% dau vao la cac thong so toa do tram trong he toa do decar
Trang 27% dau vao : vi tri ve tinh (phist,xlast,xhh) theo rad va theo m
% thoi gian theo s
% dau ra : -posat(3)= haltge,do cao ve tinh theo m
% -posat(2)= flonge,kinh do cua ve tinh theo rd
% -posat(1)= flatge,vi do cua ve tinh theo rd
% - dist,khoang cach tu ve tinh toi may thu theo m
% -posat(5)= azim ,goc azimut theo rd
% -posat(4)= elev ,goc ngang theo rd
global ecce i0 omd ra om0 ome m0 af0 af1 toe toc crs cuc cus cic cis crc den idot af2 tmil=302400.0d+00;
% xmu = tham so truong trong luc cua trai dat
% omedo = toc do quay trai dat
Trang 28a=ra*ra; % a = nua ban truc chinh
xno=sqrt(xmu/(a*a*a)); % xno = chuyen dong trung binh
deltat=af0+af1*(temps-toc)+af2*(temps-toc)*(temps-toc); % do lech thoi gian ve tinh
t=temps-deltat; % thoi gian gps
xn=xno+den; % xn = chuyen dong trung binh chinh xac
xmk=m0+xn*tk; % xmk = chuyen dong trung binh khong binh thuong
% phuong trinh kepler doi voi cac quy dao chuyen dong khong binh thuong lech tam ek
xpk=rk*cos(uk); ypk=rk*sin(uk); % xpk,ypk = vi tri trong mat phang quy dao
omek=om0+(omd-omedo)*tk-omedo*toe; % omek = kinh do chinh xac cua chuyen dong lech tam
% he toa do trai dat co dinh
xk=xpk*cos(omek)-ypk*sin(omek)*cos(xik);
yk=xpk*sin(omek)+ypk*cos(omek)*cos(xik);
Trang 29posat(1)=psi; posat(2)=alpha; posat(3)=alt;
% tinh toa do ve tinh tu moi quan he cua tram
Trang 30tuj=ihh+imn/60.0+sec/3600.0; % gio UT trong ngay
tuw=ihh*3600+imn*60+sec+jsem*86400; % gio UT trong tuan
Trang 31val(1,1)=str2num(line(01:14)); val(2,1)=str2num(line(17:30)); val(3,1)=str2num(line(33:46)); val(4,1)=str2num(line(49:62)); val(5,1)=0.0;
end
%
elseif ient == 5
if (n >=14 & line(11:11) == '.' ), val(1,1)=str2num(line(01:14)); end
if (n >=30 & line(27:27) == '.' ), val(2,1)=str2num(line(17:30)); end
if (n >=46 & line(43:43) == '.' ), val(3,1)=str2num(line(33:46)); end
if (n >=62 & line(59:59) == '.' ), val(4,1)=str2num(line(49:62)); end
if (n >=78 & line(75:75) == '.' ), val(5,1)=str2num(line(65:78)); end
%
elseif ient >= 6
if (n >=14 & line(11:11) == '.' ), val(1,1)=str2num(line(01:14)); end
if (n >=30 & line(27:27) == '.' ), val(2,1)=str2num(line(17:30)); end
if (n >=46 & line(43:43) == '.' ), val(3,1)=str2num(line(33:46)); end
if (n >=62 & line(59:59) == '.' ), val(4,1)=str2num(line(49:62)); end
if (n >=78 & line(75:75) == '.' ), val(5,1)=str2num(line(65:78)); end line = fgetl(fid5);
% ham tinh cac gia tri do lech trung binh cho n ngay xu ly
% tinh cac gia tri do lech trung binh hang ngay
%
fid5=fopen( 'b_entree_lan.txt' , 'r' );
line=fgetl(fid5); % tieu de file
mpath=fgetl(fid5); % duong dan file so lieu can xu ly Rinex
Trang 32apath=fgetl(fid5); % duong dan file so lieu can xu ly almanac
ipath=fgetl(fid5); % duong dan file so lieu can xu ly tu mo hinh toan cau
spath=fgetl(fid5); % duong dan file so lieu loi ra
cgps=fgetl(fid5); % tan tram
for jour=jour_deb:jour_fin % ngay bat dau va ngay ket thuc
jd=jour; md=mois; iad=annee;
fprintf( '%s%s\n' , 'fin lecture ' ,fiche);
% B tinh TEC tu mo hinh toan cau
[itec,itimes,nbmap,xlat1,xlatp,xlon1,xlonp]=lect_ionex(ipath,cgps,cq,ca);
%C tinh do lech giua TEC mo hinh va TEC do dac
E=[]; xx=[]; yy=[];
compt=zeros(32); sum=zeros(32);
Trang 33for ib=1:nc
if C(6,ib) > elev_min % gioi han goc ngang
[model_v]=tec_ionex(C(3,ib),C(4,ib),C(1,ib),itec,itimes,nbmap,xlat1,xlatp,xlon1,xlonp); timc=C(1,ib);
jour,emean);
end
end
fclose (fid4);
%E inh median cho n ngay tinh
biais_res(fichs); % do lech may thu + ve tinh
return
% -function [itec,itimes,nbmap,xlat1,xlatp,xlon1,xlonp]=lect_ionex(ipath,cgps,cq,ca)
%%%%%%%%%%%%% chuong trih tinh TEC tu mo hinh toan cau %%%%%%%%%%%
% loi vao : file codg
% don vi cua tec la (TECU)
itec=zeros(71,73,13);
itimes=zeros(13);
filin=strcat(ipath, 'codg' ,cq, '0.' ,ca, 'i' );
fprintf( '%s%s\n' , ' fichier ionex = ' ,filin)
fid5=fopen(filin, 'r' );
Trang 35
% ham tinh gia tri TEC mo hinh cho toa do tram tuong ung
if rlon > 180, rlon=rlon-360; end
Trang 37if kun == 1, med(i)=median(E); end
fprintf( '%3s%3.0f%3s%8.2f%s\n' , 'bb(' ,i, ')=' ,med(i), ';' )
end
fprintf(fid4, '%s%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f% 7.2f%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f
%7.2f\n' ,
' med
' ,med(1),med(2),med(3),med(4),med(5),med(6),med(7),med(8),med(9),med(10),med(11),med(12 ),med(13),med(14),med(15),med(16),med(17),med(18),med(19),med(20),
med(21),med(22),med(23),med(24),med(25),med(26),med(27),med(28),med(29),med(30),med(3 1),med(32));
fclose (fid4);
disp( ' fin' )
return
% -function iquand = quant(jour,mois,ian)
% ham tinh quantieme ngay
njo(1)=31; njo(2)=28; njo(3)=31; njo(4)=30;
njo(5)=31; njo(6)=30; njo(7)=31; njo(8)=31;
njo(9)=30; njo(10)=31; njo(11)=30; njo(12)=31;
Trang 38% ham tinh tuan va ngay GPS
% loi vao : ngay, thang, nam
Trang 392) Chuong trinh tinh TEC tuyet doi va ve
mpath=fgetl(fid5); % duong dan file loi vao Rinex
apath=fgetl(fid5); % duong dan file loi vao almanac
ipath=fgetl(fid5); % duong dan file loi vao mo hinh
spath=fgetl(fid5); % duong dan file loi ra
cgps=fgetl(fid5); % ten tram
%B doc gia tri do lech median thang cua may thu + ve tinh
disp( 'lecture des biais' )
str_mois=num2str(mois);
if mois < 10, str_mois=strcat( '0' ,str_mois); end
str_annee=num2str(annee);
fichs=strcat(spath, 'jour_' ,str_mois,str_annee, '.txt' ); % exemple jour_042008.txt
fid4=fopen(fichs, 'r' ); % fichier resultat
Trang 40%C tinh gia tri tuyet oi cua TEC thang dung
disp( 'tec vertical' )
% cau truc cua ma tran A : gio, ve tinh, vi do diem cat, kinh do diem cat, TEC nghieng, goc ngang
[A,count] = fscanf(fid5, '%f%f%f%f%f%f%f%f%f%f%f%f%f' ,[6 inf]);
% ve de kiem tra
if A(6,ii) > 20
ke=ke+1;
tl(ke)=A(1,ii)/3600+A(4,ii)/15.0; % theo gio
tl(ke)=((jour-1)*24+tl(ke))/24; % theo ngay
xlabel( 'time TU' )
ylabel( 'TEC (tecu)' )
ct=strcat(cgps, ' - ' ,str_mois, '/' ,str_annee);
title(ct, 'Fontsize' ,14, 'FontWeight' , 'demi' )
return