Где я могу найти требования к памяти для функции MATLAB? - PullRequest
1 голос
/ 17 апреля 2011

У меня есть трехмерный массив значений (0 или 1), который очень большой (приблизительно 2300x2300x11).Я хочу подогнать поверхность под эти значения, используя, например, interp3, но при попытке MATLAB не хватает памяти.Таким образом, я решил уменьшить размер моего массива настолько, чтобы MATLAB поместил его в память.

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

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

Ответы [ 2 ]

2 голосов
/ 17 апреля 2011

Я не знаю ответа на этот вопрос, но мне интересно, можете ли вы взять свой торт и съесть его тоже.

Если ваш набор данных слишком большой, почему бы не сделать кусочную подгонку?Делайте это частями, а не опуская точки данных.

Или будьте умнее, как опускать точки данных.Вы хотите их в областях высокой кривизны - где ваши данные меняются быстрее всего.Оставьте точки в местах, далеко от места действия, где ничего интересного не происходит.Возможно, вам придется подгонять, смотреть на поверхность, добавлять и удалять больше точек и пытаться снова.

Это может быть итеративный процесс, но я держу пари, что вы сможете получить хорошее соответствие снемного удачи и усилий.

1 голос
/ 17 апреля 2011

Вы можете посмотреть максимальный размер массива, поддерживаемый на разных платформах .В общем, если у вас есть 3D-массив размером PxQxR размером double с, тогда размер вашего массива в байтах равен P*Q*R*8.Для вашей матрицы размер ~ 444 МБ.Вы также можете попробовать уменьшить его до single, используя single(A).single использует 4 байта на элемент, и вы можете уменьшить размер вашего массива в 2 раза.

Я не особо разбираюсь во внутренней работе interp3, но точные требования к памяти будут зависетьна выбранной вами опции интерполяции.Итак, вы можете сначала попытаться преобразовать его в single и посмотреть, работает ли он.Если нет, попробуйте с 80% (90%) количества строк и столбцов.Таким образом, у вас есть хороший кусок исходного массива, но требование к памяти составляет всего 64% ​​(81%) от исходного.

Если это не поможет, советуем Даффимо то, что вы должны изучить.

...