Как я могу получить сплайн MATLAB (интерполированный) из другой программы? - PullRequest
2 голосов
/ 14 мая 2011

Если бы я должен был создать интерполированные сплайны из большого объема данных (около 400 диаграмм, по 500 000 значений каждый), как я мог бы тогда быстро и эффективно получить доступ к координатам этих сплайнов из другого программного обеспечения?

Изначально я намеревался запустить регрессию в данных и использовать полученную формулу в моей программе на Delphi, но это оказалось более болезненным, чем я думал.

В настоящее время я использую Matlab, но при необходимости могу использовать другое программное обеспечение.

Редактировать: Вероятно, уместно, что эти данные представляют empirical cumulative distribution некоторых других данных (которые у меня уже есть в базе данных).

Вот как будет выглядеть один из этих графиков. example

Акцент сделан на скорость доступа. Я намерен использовать эти данные для запуска моделирования на финансовых данных.

Ответы [ 4 ]

1 голос
/ 14 мая 2011

В MATLAB есть команда для преобразования сплайна в кусочно-полином.Затем вы можете извлечь разрывы и коэффициенты каждого куска многочлена с помощью unmkpp и оценить их в другой программе.

1 голос
/ 14 мая 2011

Если вы также знакомы с C, вы можете использовать кодировщик Matlab или что-то подобное, чтобы получить промежуточную библиотеку для соединения вашей Delphi-программы и MATLAB вместе.Взаимодействие Delphi и C-кода, хотя и немного утомительно, безусловно, возможно (или это было еще во времена Delphi 7).Или вы могли бы даже написать алгоритм в MATLAB, преобразовать код в C, используя Matlab-кодер, и из Delphi вызвать сгенерированную библиотеку C.

Возможно, это немного излишне, но вы можете хранить свои данные в базе данных (например,MySQL) из MATLAB и получить их из Delphi.

Наконец: Delphi - реальное ограничение?Вы также можете использовать MATLAB для симуляции, поскольку у вас могут быть те же инструменты (или даже больше), которые доступны для MATLAB, чем в Delphi.После этого вы можете просто поделиться результатами, которые, я полагаю, менее критичны по скорости.

1 голос
/ 14 мая 2011

Мое первоначальное предположение о том, как сделать это эффективно, состояло бы в том, чтобы создать файл отображения памяти в MATLAB с использованием memmapfile, вставить в него таблицу соответствия с вашими данными, затем открыть файл отображения памяти в коде Delphi и прочитать данные из этого файла.

0 голосов
/ 14 мая 2011

Наиболее быстрой является, скорее всего, справочная таблица, которую вы сохраняете на диск и загружаете и используете в коде симуляции (хотя: почему бы не запустить симуляцию в Matlab?)

Вы можете оценить сплайн для мелкозернистого списка значений x, используя FNVAL , и использовать ближайшее значение x, чтобы найти файл cdf.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...