exponenta event banner

Simulink.saveVars

Сохранение переменных рабочей области и их значений в формате кода MATLAB

Синтаксис

Simulink.saveVars(filename)
Simulink.saveVars(filename, VarNames)
Simulink.saveVars(filename, '-regexp', RegExps)
Simulink.saveVars(filename, Specifications, UpdateOption)
Simulink.saveVars(filename, Specifications, Configuration)
Simulink.saveVars(filename, Specifications, MatlabVer)
[r1, r2] = Simulink.saveVars(filename, Specifications)

Примечание

Simulink.saveVars не рекомендуется. Использовать matlab.io.saveVariablesToScript вместо этого.

Описание

Simulink.saveVars(filename) сохраняет все переменные в текущей рабочей области, для которых можно создать код MATLAB ®, в файл MATLAB с именемfilename.m. Если код MATLAB не может быть создан для переменной, переменная сохраняется в сопутствующем MAT-файле с именем filename.matи генерируется предупреждение. Если любой файл уже существует, он перезаписывается. filename не может совпадать с именем любой переменной в текущей рабочей области и может дополнительно включать суффикс .m. Используя Simulink.saveVars не влияет на содержимое какой-либо рабочей области.

При выполнении файла MATLAB переменные, сохраненные в файле, восстанавливаются в текущей рабочей области. Если существует сопутствующий MAT-файл, код в файле MATLAB загружает MAT-файл, восстанавливая его переменные. Если существуют как файл MATLAB, так и файл MAT, не загружайте файл MATLAB, если файл MAT не доступен или если не возникнет ошибка. Не загружайте непосредственно MAT-файл, иначе произойдет неполное восстановление данных. Если загрузка файла перезаписывает существующие переменные, предупреждение не выводится.

Можно редактировать файл MATLAB, который Simulink.saveVars создает. Комментарии можно вставлять между или внутри разделов кода MATLAB для сохраненных переменных. Однако при последующем использовании Simulink.saveVars для обновления или добавления в файл сохраняются только комментарии между разделами кода MATLAB. Поэтому внутренние комментарии должны использоваться только в файлах, которые не предполагается изменять.

Нельзя редактировать раздел заголовка в файле MATLAB, который содержит первые пять строк комментария. Simulink ® не проверяет синтаксическую правильность файла MATLAB, отредактированного вручную. MathWorks не рекомендует редактировать код MATLAB в файле. Нельзя редактировать MAT-файл и не следует пытаться сделать это.

Simulink.saveVars(filename, VarNames) сохраняет только переменные, указанные в VarNames, который представляет собой разделенный запятыми список имен переменных. Можно использовать подстановочный символ * для сохранения всех переменных, соответствующих шаблону. * соответствует одному или нескольким символам, включая символы, не являющиеся буквенно-цифровыми.

Simulink.saveVars(filename, '-regexp', RegExps) сохраняет только переменные, имена которых соответствуют одному из регулярных выражений в RegExps, который представляет собой список выражений, разделенных запятыми. Дополнительные сведения см. в разделе Регулярные выражения. Вызов функции может указывать оба VarNames и -regexps RegExps, в таком порядке и с разделением запятыми.

Simulink.saveVars(filename, Specifications, UpdateOption) сохраняет переменные, описанные Specifications (которая представляет спецификации переменных в любом из вышеперечисленных синтаксисов) в соответствии с указаниями UpdateOption, который может быть любым из следующих:

  • '-create' - Создание нового файла MATLAB (и MAT-файла при необходимости) по указанию Specifications. Если любой файл уже существует, он перезаписывается. Это поведение по умолчанию.

  • '-update' - Обновить существующий файл MATLAB (и MAT-файл при необходимости), указанный в filename путем изменения только тех переменных, которые соответствуют Specifications и уже существуют в любых файлах. Порядок переменных в файлах сохраняется. Комментарии в разделах кода MATLAB не сохраняются.

  • '-append' - Обновить существующий файл MATLAB (и MAT-файл при необходимости), указанный в filename около:

    • Обновление переменных, соответствующих Specifications и уже существуют в файле или файлах, сохраняя существующий порядок в файле или файлах. Комментарии в разделах кода MATLAB не сохраняются.

    • Добавление переменных, соответствующих Specifications и не существуют в файле или файлах путем добавления переменных к файлу или файлам. Эти новые разделы изначально не имеют замечаний.

Simulink.saveVars(filename, Specifications, Configuration) сохраняет переменные, описанные Specifications (которая представляет характеристики переменной в любом из вышеперечисленных синтаксисов) в соответствии с указанным Configuration. Configuration может содержать любую или все из следующих опций в любом порядке, разделенных запятыми, если отображается несколько опций:

  • '-maxnumel' MaxNum - ограничивает число элементов, сохраненных для массива, до MaxNum, которое должно быть целым числом от 1 до 10000. Для символьного массива верхний предел равен удвоенному значению, указанному с помощью MaxNum. Если массив больше MaxNumвесь массив появляется в MAT-файле, а не в MATLAB-файле, генерируя предупреждение. По умолчанию: 1000

  • '-maxlevels' MaxLevels ограничивает число уровней иерархии, сохраненных для структуры или массива ячеек, до MaxLevels, которое должно быть целым числом от 1 до 200. Если структура или массив ячеек глубже, чем MaxLevelsвесь объект появляется в MAT-файле, а не в файле MATLAB, генерируя предупреждение. По умолчанию: 20

  • '-textwidth' TextWidth устанавливает ширину обтекания текстом в файле MATLAB равной TextWidth, которое должно быть целым числом от 32 до 256. По умолчанию: 76

  • '-2dslice' - задает два размера для 2-D срезов, представляющих n-D (где n больше 2) данных символа, логики или числового массива. Simulink.saveVars использует первые два измерения массива n-D для указания размера фрагмента 2-D, если только после -2dslice вариант. Если указать два целочисленных аргумента:

    • Два целых числа должны быть положительными.

    • Два целых числа должны быть меньше или равны числу измерений массива n-D.

    • Второе целое число должно быть больше первого.

Simulink.saveVars(filename, Specifications, MatlabVer) действует в соответствии с описанием Specifications (который представляет спецификации после filename в любом из приведенных выше синтаксисов) сохранение любого созданного MAT-файла в формате, требуемом для версии MATLAB, указанной в MatlabVer. Возможные значения:

  • '-v7.3' - 7.3 или более поздняя

  • '-v7.0' - 7,0 или выше

  • '-v6' - Версия 6 или более поздняя

  • '-v4' - Любая версия MATLAB

[r1, r2] = Simulink.saveVars(filename, Specifications) действует в соответствии с описанием Specifications (который представляет спецификации после filename в любом из приведенных выше синтаксисов) и сообщает, какие переменные он сохранил:

  • r1 - массив ячеек символьных векторов. Векторы символов называют все переменные (если таковые имеются), сохраненные в файле MATLAB.

  • r2 - массив ячеек символьных векторов. Векторы символов называют все переменные (если таковые имеются), сохраненные в MAT-файле.

Входные аргументы

filename

Имя файла или имена файлов, которые создает или обновляет функция. filename не может совпадать с именем переменной в текущей рабочей области. filename может иметь суффикс .m, но функция игнорирует его.

VarNames

Переменная или последовательность переменных, разделенных запятыми. Функция сохраняет только указанные переменные в выходной файл. Можно использовать подстановочный символ * для сохранения всех переменных, соответствующих шаблону. * соответствует одному или нескольким символам, включая символы, не являющиеся буквенно-цифровыми.

'-regexp', RegExps

После ключевого слова регулярное выражение или последовательность регулярных выражений, разделенных запятыми. Функция сохраняет в выходной файл только те переменные, имена которых совпадают с одним из выражений. См. Регулярные выражения для получения дополнительной информации Вызов функции может указывать оба VarNames и -regexps RegExps, в таком порядке и с разделением запятыми.

UpdateOption

Любое из трех ключевых слов, управляющих действием функции. Возможные значения:

  • '-create' - Создание нового файла MATLAB (и MAT-файла при необходимости) по указанию Specifications.

  • '-update' - Обновить существующий файл MATLAB (и MAT-файл при необходимости), указанный в filename путем изменения только тех переменных, которые соответствуют Specifications и уже существуют в файле или файлах. Порядок переменных в файле или файлах сохраняется.

  • '-append' - Обновить существующий файл MATLAB (и MAT-файл при необходимости), указанный в filename около:

    • Обновление переменных, соответствующих Specifications и уже существуют в файле или файлах, сохраняя существующий порядок в файле или файлах.

    • Добавление переменных, соответствующих Specifications и не существуют в файле или файлах путем добавления переменных, соответствующих Specifications в файл или файлы.

По умолчанию: '-create'

Configuration

Любая или все из следующих опций в любом порядке разделяются запятыми, если отображается более одной опции:

  • '-maxnumel' MaxNum - ограничивает число элементов, сохраненных для массива, до MaxNum, которое должно быть целым числом от 0 до 10000. Если массив больше этого, весь массив появляется в MAT-файле, а не в файле сценария MATLAB, генерируя предупреждение. По умолчанию: 1000

  • '-maxlevels' MaxLevels - ограничивает число уровней, сохраненных для структуры или массива ячеек, до MaxLevels, которое должно быть целым числом от 0 до 200. Если структура или массив ячеек глубже, то вся сущность появляется в MAT-файле, а не в файле сценария MATLAB, генерируя предупреждение. По умолчанию: 20

  • '-textwidth' TextWidth - Устанавливает ширину обтекания текстом в файле сценария MATLAB равной TextWidth, которое должно быть целым числом от 32 до 256. По умолчанию: 76

  • '-2dslice' - задает два размера для 2-D срезов, представляющих n-D (где n больше 2) массивов символьных, логических или цифровых данных. Использование '-2dslice' создает более читаемый сгенерированный код, который согласуется с тем, как MATLAB отображает данные массива n-D.

    Simulink.saveVars использует первые два измерения массива n-D для указания размера фрагмента 2-D, если только после -2dslice вариант. Если указать два целочисленных аргумента:

    • Два целых числа должны быть положительными.

    • Два целых числа должны быть меньше или равны числу измерений массива n-D.

    • Второе целое число должно быть больше первого.

Примечание

Настройки MATLAB можно использовать для изменения значений по умолчанию для -maxnumel, -maxlevels, '-2dslice', и -textwidth опции конфигурации. На панели Рабочая область (Workspace) используйте параметры в группе Сохранение переменных как файлов сценариев MATLAB.

MatlabVer

Указывает версию MATLAB, синтаксис которой будет использоваться любым MAT-файлом, сохраненным функцией.

  • '-v7.3' - 7.3 или выше

  • '-v7.0' - 7,0 или выше

  • '-v6' - Версия 6 или более поздняя

  • '-v4' - Любая версия MATLAB

По умолчанию: '-v7.3'

Выходные аргументы

r1

Список имен всех переменных (при их наличии), сохраненных в файле MATLAB.

r2

Список имен всех переменных (при их наличии), сохраненных в MAT-файле.

Примеры

Определите некоторые базовые переменные рабочей области, а затем сохраните их все в новом файле MATLAB с именем MyVars.m использование значений по умолчанию для всех входных аргументов, кроме filename.

a = 1;
b = 2.5;
c = 'A string';
d = {a, b, c};
Simulink.saveVars('MyVars');

Определите дополнительные базовые переменные рабочей области, а затем добавьте их в существующий файл MyVars.m без изменения значений, ранее сохраненных в файле:

K = Simulink.Parameter;
MyType = fixdt (1,16,3);
Simulink.saveVars('MyVars', '-append', 'K', 'MyType');

Обновить переменные V1 и V2 со своими значениями в файле MATLAB или для любого, значение которого не может быть преобразовано в код MATLAB, в MAT-файле. Файл должен уже существовать. Любой массив с более чем 10 элементами будет сохранен в MAT-файле, который может быть загружен в любую версию MATLAB. Возвращаемый аргумент r1 перечисляет имена любых переменных, сохраненных в файле MATLAB; r2 перечисляет все сохраненные в MAT-файле.

[r1, r2] = Simulink.saveVars('MyFile', 'V1', 'V2', '-update',
'-maxnumel', 10, '-v4');

Укажите фрагмент 2-D для вывода my3Dtable 3-D массив. Укажите, что 2-D фрагмент расширяется вдоль первого и третьего размеров:

my3DTable = zeros(3, 4, 2, 'single');
Simulink.saveVars('mfile.m', 'my3DTable', '-2dslice', 1, 3);

Генерируемый код MATLAB:

my3DTable = zeros(3, 4, 2, 'single');
my3DTable (:,1,:) = single ( ...
  [1 13;
   5 17;
   9 21]);
my3DTable (:,2,:) = single( ...
  [2 14;
   6 18;
   10 22]);
my3DTable (:,3,:) = single( ...
  [3 15;
   7 19;
   11 23]);
my3DTable (:,4,:) = single( ...
  [4 16;
   8 20;
   12 24]);

Ограничения

Simulink.saveVars функция:

  • Не сохраняет общие ссылки.

  • Игнорирует динамические свойства объектов.

  • Сохраняет следующие данные в MAT-файл, хотя они могут появиться в файле MATLAB:

При сохранении большого количества переменных созданный файл MATLAB может содержать много строк кода и может занимать много времени. Во избежание длительного времени выполнения рассмотрим следующие альтернативы:

Совет

  • Если не требуется сохранять переменные в легко понятной форме, см. save функция.

  • Если необходимо сохранить только объекты шины, используйте Simulink.Bus.save функция.

  • Если необходимо сохранить только набор конфигурации, используйте Simulink.ConfigSet.saveAs способ.

Представлен в R2010a