Переменные persistent в Matlab

В Matlab есть одна довольно редко используемая и не очевидная функциональность, заключающаяся в использовании переменных с модификатором persistent. Фактически такие переменные аналогичны статическим переменным в теле метода, например у С++. Одним из наиболее типичных сценариев использования таких переменных является написание функций загрузки большого объема данных либо длительной предварительной обработки. При первом запуске метода, содержащего переменную с модификатором persistent, эта переменная будет пустой. При последующих запусках, если функция не изменялась, значение переменной persistent сохранится. Таким образом можно выполнить длительные вычисления или загрузку данных с диска (десериализация mat-файлов в Matlab работает довольно медленно) только при первом вызове функции.

function DB = LoadDB(DBPath, Reload)
%function DB = LoadDB(DBPath, Reload)
% функция чтения данных по пути DBPath
% Reload — принудительная перезагрузка (по умолчанию — false)

if nargin<2 %если переменная Reload не задана, задаем значение по умолчанию Reload = false; end persistent db; if isempty(db) || Reload %если еще не разу ни запускали чтение или необходимо принудительно повторить загрузку данных % читаем базу в переменную db end Db = db; %копируем в выходную переменную [/sourcecode]


Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *