Вычисление, хранение и извлечение значений в и из N-мерной матрицы - PullRequest
1 голос
/ 02 июня 2010

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

По сути, у меня есть алгоритм, который использует 5 (или более) переменных для вычисления одного значения, называемого outcome. Теперь я должен реализовать этот алгоритм на встроенном устройстве, которое не имеет ограничений памяти, но имеет очень жесткие ограничения обработки.

В связи с этим я хотел бы запустить механизм вычислений, который вычисляет outcome для, скажем, 20 различных значений каждой переменной и сохраняет эту информацию в файле. Вы можете думать об этом как о 5 (или более) -мерной матрице или 5 (или более) -мерном массиве, каждое измерение длиной 20 записей.

На любом современном языке заполнение этого массива так же просто, как наличие 5 (или более) вложенных циклов for. Сложность заключается в том, что мне нужно выгрузить эти значения в файл, который затем можно поместить на встроенное устройство, чтобы устройство могло использовать его в качестве справочной таблицы.

Вопросы сейчас:

  1. Какой формат (ы) может быть приемлемым для хранения данных?
  2. Какие программы (MATLAB, C # и т. Д.) может быть лучше всего подходит для вычисления данные
  3. C # должен использоваться для импорта данных на устройстве - это возможно ответили на # 1?

Edit: Можно ли читать из моего файла таблицы поиска, не считывая весь файл в память? Можете ли вы объяснить, как это можно сделать в C #?

Ответы [ 2 ]

2 голосов
/ 02 июня 2010

Я также прокомментирую 1 и 3. Может быть предпочтительнее использовать выходной файл фиксированной ширины, а не CSV. Это может занимать больше или меньше места, чем CSV, в зависимости от выходных чисел. Однако, это имеет тенденцию работать хорошо для таблиц поиска, поскольку выяснение, где искать в файле данных фиксированной ширины, может быть сделано без чтения всего файла. Это обычно важно для справочной таблицы.

Данные фиксированной ширины, как и в CSV, тривиальны для чтения и записи. Некоторые математически ориентированные языки могут предлагать плохую функциональность для работы со строками и двоичными кодами, но на самом деле должно быть очень просто преобразовать данные в фиксированную ширину во время шага импорта независимо от этого.

На номер 2 ответить сложнее, особенно если вы не знаете, какой алгоритм вы используете. Matlab и подобные программы, как правило, отлично подходят для определенных типов вычислений и часто содержат много встроенных вещей, чтобы упростить их. Тем не менее, многие математические средства, встроенные в такие языки, доступны для других языков в виде библиотек.

0 голосов
/ 02 июня 2010

Я прокомментирую (1) и (3). Все, что вам нужно сделать, это сбросить данные в срезы. Выберите обход и выведите данные в указанном порядке. Запишите это в виде разделенных запятыми чисел.

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