|
|
|||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||
| Вход | |||||||||||||||||||||||||||||||||
|
Раздел "MATLAB\MATLAB"
В.Г.Потемкин "Введение в Matlab" (v 5.3) В оглавление книги \ К следующему разделу \ К предыдущему разделу \ Предметный указатель 3.10. Повышение эффективности обработки М-файлов Этот раздел описывает методы повышения быстродействия при выполнении программы и управление памятью:
MATLAB - это язык, специально разработанный для обработки массивов и выполнения матричных операций. Всюду, где это возможно, пользователь должен учитывать это обстоятельство. Векторизация циклов. Под векторизацией понимается преобразование циклов for и while к эквивалентным векторным или матричным выражениям. При векторизации алгоритма ускоряется выполнение M-файла. Пример Пример A = [1 2 3; 4 5 6];
Функция repmat использует векторное представление для индексов, указывающих размещение блоков: function B = repmat(A, M, N)
Предварительное выделение памяти. В системе MATLAB есть возможность для существенного сокращения времени выполнения программы за счёт предварительного размещения массивов для выходных данных. Предварительное распределение избавляет от необходимости изменять массив при увеличении его размеров. Используйте соответствующие функции предварительного выделения памяти, как это показано в таблице для различных типов массивов
Предварительное выделение памяти позволяет избежать фрагментации памяти при работе с большими матрицами. В ходе сеанса работы системы MATLAB, память может стать фрагментированной из-за работы механизмов динамического распределения и освобождения памяти. Это может привести к появлению большого количества фрагментов свободной памяти, и непрерывного пространства памяти может оказаться недостаточно для хранения какого-либо большого массива. Предварительное выделение памяти позволяет определить непрерывную область, достаточную для проведения всех вычислений. Функции управления памятью. Существует несколько подходов к повышению эффективности использования памяти, рассмотренные ниже. В системе MATLAB предусмотрено пять функций для работы с памяти:
Замечание Команды save и load работают быстрее, чем утилиты ввода-вывода системы МАТLАВ. Эти команды оптимизированы как по скорости выполнения, так и по возможности фрагментации памяти. На некоторых платформах команда whos выводит на экран количество оставшейся свободной памяти. Тем не менее полезно знать:
Удаление функции из памяти. При загрузке MATLAB создает список имён всех M- и MEX-файлов, которые находятся в каталоге matlab/toolbox. Этот список сохраняется в памяти и освобождается только при создании нового списка с помощью функции path. Коды M- и MEX-файлов загружаются в память только при вызове соответствующей функции. Они удаляются из памяти: Рекурсивный вызов функций. При использовании вложенных функций требуется тот же объём памяти, как при их последовательном вызове. Пример
Переменные и память. Память выделяется для переменной всякий раз, когда эта переменная не существует. Для экономии памяти надо:
Глобальные переменные. При объявлении глобальной переменной в таблицу переменных просто помещается флаг. При этом не требуется дополнительной памяти. Например, последовательность операторов a = 5; global a определяет переменную a как глобальную и формируется дополнительная копия этой переменной. Функция clear a удаляет переменную а из рабочей области системы MATLAB, но сохраняет её в области глобальных переменных. Функция clear global a удаляет переменную а из области глобальных переменных. Особенности платформы PC.
Предварительное выделение памяти для самых больших массивов позволяет оптимизировать использование доступной памяти. Сообщение " Out of Memory". Обычно сообщение ‘Out of Memory - недостаточно памяти‘ появляется, когда система MATLAB запрашивает памяти больше, чем ей доступно в текущий момент. Для оптимизации доступной памяти необходимо воспользоваться одним или несколькими методами, перечисленными выше. Если и этого оказывается недостаточным, надо:
В оглавление книги \ К следующему разделу \ К предыдущему разделу \ Предметный указатель
|
|
Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2002 г.)
|
||
| На первую страницу \ Сотрудничество \ MathWorks \ SoftLine \ Exponenta.ru \ Exponenta Pro | ||
| E-mail: | ||
| Информация на сайте была обновлена 11.05.2004 |
Copyright 2001-2004 SoftLine Co Наши баннеры |
|