Старый 15.11.2009, 12:50   #1
LordWilex
В отпуске
 
Аватар для LordWilex
 
Регистрация: 01.06.2008
Адрес: Таганрог
Сообщения: 28,983
LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000
По умолчанию JPL эфемериды в MatLab

Хорошая навость! Нашел в интернете одну весьма апетитную штуковину.
Оказывается НАСА предоставляет программныей интерфейс для работы со своими JPL эфемеридами в системе MatLab (а так же, библиотеки для Visual C, GCC, и fortran), называется это чудо SPICE, распологается на сайте http://naif.jpl.nasa.gov/naif/ .
В общем пока до конца не разобрался в этом деле, пытаюсь читать документацию, система действительно не простая, но с точки зрения использования в астрологической статистике, - перспективы просто завораживающие!
И так, попробую рассказать, как подключить эту систему к Matlab.
1. Идем сюда: ftp://naif.jpl.nasa.gov/pub/naif/too...2bit/packages/ и скачиваем файл mice.exe (а заодно, и другие мелкие файл, там инструкция по установки на инглише).

2. Распаковываем это чудо в папку, где у вас установлен Matlab, на пример, у меня это "c:\MATLAB701\".
И сразу же, небольшая тонкость, там в папке "c:\MATLAB701\mice\lib\" есть такой файл: "mice.mexw32" , если в вашей версии MatLab'а он не захочет подключаться, как это произошло у меня, переименовываем его в "mice.mex".
3. Далее идем сюда: ftp://naif.jpl.nasa.gov/pub/naif/gen...s/spk/planets/ и качаем файлы: de421.bsp и de421.cmt, (документация к ним тут же в файлах: de421_announcement.pdf и de421_lunar_ephemeris_and_orientation.pd f), в них содержатся самые последние и точные на сегоднешний день эфемериды DE421, в терминологии системы SPICE эти файлы называются ядрами (karnels).
Весят они всего на всего 16 мегобайт, но к сожалению, охватывают слишком маленький интервал времени, всего с 1900 по 2050 годы.

Если нужно что-нибудь в более широким временим интервалом, идем в папку "/a_old_versions/" и качаем, на пример, DE408 (файлы de408.bsp, de408.cmt, de408.inp). DE408 это то же самое, что и DE406, единственое отличие в том, что временной интервал в них расширен с 10 тысячилетия до н.э. по 10 тыс. лет. нашей эры (вместо 3 тыс. до н.э./н.э.), но предупреждаю сразу, весят они целый гигобайт. Самих же DE406 почему-то нет, а та версия что, лежит на сайте швейцарских эфемерид по моему не того формата, хотя надо порпобовать, может подключится...

Если вам нужно что-нить по легче, рекомендую de414, они охватывают интервал с 1599 по 2201 годы, для большинства задач вполне подойдут, и весят всего 60 МБ.

4. Для того, чтобы эта штуковина заработала, нам понадобится еще одно ядро naif0009.tls, скачать его можно тут: ftp://naif.jpl.nasa.gov/pub/naif/generic_kernels/lsk/

5. Так же, если вам нужно, можно скачать ядра разных орбитальных телескопов, естественых и искусственых спутников планет, космических миссий и т.д. и т.п. ftp://naif.jpl.nasa.gov/pub/naif/

6. Теперь запускаем MatLab.
Вводим команды:
>> addpath('C:\MATLAB701\mice\src\mice\')
>> addpath('C:\MATLAB701\mice\lib\')
Потом вводим команду:
>> which mice
Если все подключилось удачно, появится надпись: "C:\MATLAB701\mice\lib\mice.mex"
Если нет, переименовываем файл "mice.mexw32" в "mice.mex" с сново пробуем команду:
>> which mice

7. Теперь подключаем эфемериды, сделать это можно командой
>> cspice_furnsh('C:\MATLAB701\mice\data\de 421.bsp')
(Обязательно указывайте полный путь к файлу de421.bsp, у меня без этого почеум-то не хотело подключаться).

Теперь подключаем ядро временых поправок:
>> cspice_furnsh('C:\MATLAB701\mice\data\na if0009.tls')
И все, в принципе можно пользоваться.

8. Давайте попробуем вычислить координаты, кажется Луны, кажется на сегодня, кажется в прямоугольной системе координат (ес ли честно еще не разобрался в функциях и в том, как в этой системе координаты переводить, толкьо вчера поставил ).

Наберем:
>> et = cspice_str2et('Nov 15, 2009')

>> [state,lt] = cspice_spkezr( 'MOON' , ...
et , ...
'J2000', ...
'NONE' , ...
'EARTH' )

В результате чего, программа выдаст нам вот такую загагулину:

state =

1.0e+005 *

-3.2793
-1.6567
-1.0835
0.0000
-0.0000
-0.0000


lt =

1.2777



*****
Недостатки:

1. Нет специфических для астрологических исследований функций (Асц, МС, системы домов, аспекты и т.д.), но это дело поправимо, эти функции всегда можно дописать, главное эфемеридное ядро.
2. Система очень сложная, я убил пол дня, только на то, чтобы разобраться, как к её подключить, и думаю, что уйдет неделя на изучение функций.
3. Для более или менее полноценной работы, нужно грузить очень много файлов большого объема.

Приимущества:
1. В MatLab имеется шикарнейший пакет статистических функций, и вообще чего, там только нет.
2. В MatLab по сути своей заточен на матричную алгебру, что гораздо удобней, быстрей и экономичней, по сравнению с таблицами Excel.
На пример, если нам нужно сложить 2 столбца с данными, в Excel'е придется вводить формулу для сложения 2х ячеек, а потом её вручную копировать на 10000 остальныхъ ячеек, что при большом объеме данных не очень-то удобно. В то время, как в MatLab достаточно прсто написать C=A+B
3. Планеты вычисляются явно на порядок быстрей по сравнению с использованием Швейцарских эфемерид в Excel.

В общем, думаю, со временем из всего этого можно сделать отличный инструмент для астрологических исследований.
LordWilex вне форума   Ответить с цитированием
Старый 14.04.2010, 18:20   #2
astroy
Собеседник
 
Регистрация: 19.02.2010
Сообщения: 2
astroy отключил(а) отображение уровня репутации
По умолчанию JPL эфемериды

Спасибо большое за подсказку!
Вот результат Вашего примера у меня:
>> et = cspice_str2et('Nov 15, 2009')
et =
3.115152661827379e+008
>> [state,lt] = cspice_spkezr( 'MOON' , ...
et , ...
'J2000', ...
'NONE' , ...
'EARTH' )
state =
-3.279327470694660e+005
-1.656735259926945e+005
-1.083460408138630e+005
4.930845619716319e-001
-8.336137698406330e-001
-3.514793890952423e-001
lt =
1.277713634827687e+000
Сейчас и я начинаю нелегкий путь осваивания!!!
astroy вне форума   Ответить с цитированием
Старый 14.04.2010, 18:35   #3
LordWilex
В отпуске
 
Аватар для LordWilex
 
Регистрация: 01.06.2008
Адрес: Таганрог
Сообщения: 28,983
LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000
По умолчанию

Цитата:
Сообщение от astroy
Сейчас и я начинаю нелегкий путь осваивания!!!

А я его забросил, решил, что все-таки легче по пути Швейцарских эфемерид пойти

... хотя можно сделать гибрид JPL и ШЭ для матлаба, там ведь есть возможности, которых нет в ШЭ, хотя с другой стороны ШЭ они все же под астрологию заточены
LordWilex вне форума   Ответить с цитированием
Старый 14.04.2010, 18:47   #4
astroy
Собеседник
 
Регистрация: 19.02.2010
Сообщения: 2
astroy отключил(а) отображение уровня репутации
По умолчанию

Попытка на пытка!
Хелп есть, разберемся!
"Вся жизнь впереди!!!"

Еще раз спасибо, запуск отнял буквально 3 минут.
astroy вне форума   Ответить с цитированием
Старый 11.05.2012, 07:37   #5
vasnas
Собеседник
 
Регистрация: 11.05.2012
Сообщения: 1
vasnas отключил(а) отображение уровня репутации
По умолчанию

Цитата:
Сообщение от LordWilex
А я его забросил, решил, что все-таки легче по пути Швейцарских эфемерид пойти

... хотя можно сделать гибрид JPL и ШЭ для матлаба, там ведь есть возможности, которых нет в ШЭ, хотя с другой стороны ШЭ они все же под астрологию заточены

оттолкнувшис от этой темы я немножечко всем помогу:

http://www.bible-exodus.narod2.ru/ar...ephemeris.html

vasnas вне форума   Ответить с цитированием
Старый 11.05.2012, 18:22   #6
LordWilex
В отпуске
 
Аватар для LordWilex
 
Регистрация: 01.06.2008
Адрес: Таганрог
Сообщения: 28,983
LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000
По умолчанию

Цитата:
Сообщение от vasnas
оттолкнувшис от этой темы я немножечко всем помогу:

http://www.bible-exodus.narod2.ru/ar...ephemeris.html

Интересный ресурс
LordWilex вне форума   Ответить с цитированием
Старый 11.05.2012, 21:25   #7
LordWilex
В отпуске
 
Аватар для LordWilex
 
Регистрация: 01.06.2008
Адрес: Таганрог
Сообщения: 28,983
LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000LordWilex репутация выше +1000
По умолчанию

По поводу "нестыковок" между ZET, SPICE и Швейцарскими эфемеридами и прочими программами - в большинстве случаев ларчик тут просто открывается:
- Системы координат, которые используется в астрологии - немного устарели и отличаются от современных рекомендаций МАС.
- В астрологии нет единого мнения на счет того, что "правильней" использовать ли "видимые" координаты или "истинные". В частности не ясно: нужен ли учет параллакса, следует ли использовать поправки на скорость света, его деформацию гравитационным полем Солнца, стоит ли учитывать атмосферные эффекты и т.д. и т.п. Поэтому разные авторы программ делают кто во что горазд или просто не замечают этих тонкостей.
- Разные авторы программ по-разному округляют временные и угловые минуты/секунды. В ШЭ, например, можно вводить не только целую часть секунды, но и её десятичную часть, но на практике это мало кто делает, все округляется до секунд. В результате после множественных преобразований времени/координат - конечный результат может сильно отличаться от того, что должно быть.

По отдельности все это мелочи (если говорить об астрологических задачах), а в сумме может получиться "сюрприз"

Так что я бы не стал писать так:
Цитата:
Популярные 'швейцарские эфемериды' - лишь подобие эфемерид НАСА.
На самом деле они являются довольно точной интерполяцией JPL эфемерид. Разница ставится заметной, когда Вы отправляете марсоход на Марс или пытаетесь послать лазерный луч в определенную точку на поверхности Луны.
Для тех задач, которые решаете Вы - эфемериды фактически идентичны, если конечно Вы правильно настроили все поправки, выбрали идентичные системы координат и все правильно округлили.

Цитата:
Решил посчитать напрямую из 'швейцарских эфемерид', от которых отталкивается ZET, но фирменный интерфейс SWISS оказался платным.
Платным он становится лишь только тогда, когда Вы на их основе пишите программу, которую используете в коммерческих целях или бесплатную, но с закрытым исходным кодом. В остальных случаях - они распространяются по бесплатной лицензии GPL.
LordWilex вне форума   Ответить с цитированием
Старый 10.06.2014, 20:52   #8
i-mir
Собеседник
 
Регистрация: 08.06.2014
Сообщения: 2
i-mir отключил(а) отображение уровня репутации
По умолчанию

Подскажите плз - для внутренних планет все работает,
а для Юпитера и дальше - нет. В чем может быть причина ?

MFILE:

addpath('C:\MATLAB6p5\mice\src\mice\')
addpath('C:\MATLAB6p5\mice\lib\')
which mice
cspice_furnsh('C:\MATLAB6p5\mice\data\de 430.bsp')
cspice_furnsh('C:\MATLAB6p5\mice\data\na if0010.tls')
cspice_furnsh('C:\MATLAB6p5\mice\data\pc k00010.tpc')
et = cspice_str2et('Jan 1, 2000')
[ pos, ltime ] = cspice_spkezr('JUPITER', et, 'J2000','NONE', 'EARTH' )


MATLAB:
et = -4.3136e+004
??? SPICE(SPKINSUFFDATA): [spkezr_c->SPKEZR->SPKEZ->SPKGEO] Insufficient ephemeris data has been loaded to compute the state of 599 (JUPITER) relative to 399 (EARTH) at the ephemeris epoch 2000 JAN 01 00:01:04.183.

Error in ==> E:\Astro\analys.m
On line 14 ==> [ pos, ltime ] = cspice_spkezr('JUPITER', et, 'J2000','NONE', 'EARTH' )
i-mir вне форума   Ответить с цитированием
Старый 31.01.2016, 10:29   #9
Strannik
Собеседник
 
Регистрация: 03.04.2011
Сообщения: 0
Strannik отключил(а) отображение уровня репутации
По умолчанию

Цитата:
Сообщение от i-mir
Подскажите плз - для внутренних планет все работает,
а для Юпитера и дальше - нет. В чем может быть причина ?

MFILE:

addpath('C:\MATLAB6p5\mice\src\mice\')
addpath('C:\MATLAB6p5\mice\lib\')
which mice
cspice_furnsh('C:\MATLAB6p5\mice\data\de 430.bsp')
cspice_furnsh('C:\MATLAB6p5\mice\data\na if0010.tls')
cspice_furnsh('C:\MATLAB6p5\mice\data\pc k00010.tpc')
et = cspice_str2et('Jan 1, 2000')
[ pos, ltime ] = cspice_spkezr('JUPITER', et, 'J2000','NONE', 'EARTH' )


MATLAB:
et = -4.3136e+004
??? SPICE(SPKINSUFFDATA): [spkezr_c->SPKEZR->SPKEZ->SPKGEO] Insufficient ephemeris data has been loaded to compute the state of 599 (JUPITER) relative to 399 (EARTH) at the ephemeris epoch 2000 JAN 01 00:01:04.183.

Error in ==> E:\Astro\analys.m
On line 14 ==> [ pos, ltime ] = cspice_spkezr('JUPITER', et, 'J2000','NONE', 'EARTH' )

======================================== =======================
Добрый день, i-mir! Я тоже сталкивался с этой проблемой!(
Насколько я понял, для внешних планет начиная с Юпитера, SPICE рассчитывает координаты только для барицентра планеты (планета+спутники). Т.к. пакет SPICE заточен под космические полёты и расчёты идут в барицентрической системе координат. Но т.к. масса спутников несоизмеримо меньше чем масса основной планеты то, я думаю, что можно пренебречь этой маленькой не точностью. Для этого вместо названия планет, начиная с Юпитера, надо использовать числовые имена ,барицентра планеты. Т.е. Юпитер - 5, Сатурн - 6, Уран - 7, Нептун - 8, Плутон - 9. В составе пакета SPICE есть утилита brief.exe, она позволяет просмотреть данные о файлах DExxx.bsp. Удачи!!!
Strannik вне форума   Ответить с цитированием
Ответ


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +1, время: 14:07.


Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
© 1995-2024, ARGO