Создать сетку из 3d позиций - PullRequest
1 голос
/ 03 апреля 2012

Я хочу создать функцию, которая возвращает трехмерную сетку из трехмерных позиций, разделенных интервалами на каждой оси

* тип возвращаемого значения (сетка списка или сетка массива)

type t_grid = (float * float * float) list list list

or

type t_grid = (float * float * float) array array array

* здесь подпись:

create_grid width_x height_y depth_z inter_axis_x inter_axis_y inter_axis_z

create_grid : int -> int -> int -> int -> int -> int -> t_grid

Я действительно не знаю, как справиться с этим оптимизированным способом;

1 Ответ

1 голос
/ 05 апреля 2012

Кажется, вы собираетесь использовать это для численных расчетов.Если ваши массивы имеют фиксированный размер, лучше использовать «массив», чем «список», потому что массивы не могут быть изменены.Списки имеют накладные расходы на вложенную связанную структуру.Помните, что массивы не могут быть больше, чем 2 миллиона с плавающей точкой или около того.Используйте «Bigarray» для больших массивов.

Фактически, посмотрите документацию для модуля «Bigarray».Он поддерживает многомерные массивы напрямую!Это, безусловно, намного эффективнее, чем вложенный массив массивов.Смотрите здесь:

http://caml.inria.fr/pub/docs/manual-ocaml/manual043.html http://caml.inria.fr/pub/docs/manual-ocaml/libref/Bigarray.html

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