exponenta event banner

coder.load

Загрузка констант времени компиляции из MAT-файла или ASCII-файла в рабочую область вызывающего абонента

Описание

пример

S = coder.load(filename) загружает константы компиляции-времени из filename.

  • Если filename является MAT-файлом, то coder.load загружает переменные из MAT-файла в массив структуры.

  • Если filename является ASCII-файлом, то coder.load загружает данные в массив двойной точности.

coder.load загружает данные во время генерации кода, также называемое временем компиляции. При изменении содержимого filename после создания кода изменение не отражается на поведении созданного кода.

S = coder.load(filename,var1,...,varN) загружает только указанные переменные из MAT-файла filename.

S = coder.load(filename,'-regexp',expr1,...,exprN) загружает только переменные, соответствующие указанным регулярным выражениям.

S = coder.load(filename,'-ascii') удовольствия filename как ASCII-файл, независимо от расширения файла.

S = coder.load(filename,'-mat') удовольствия filename как MAT-файл, независимо от расширения файла.

S = coder.load(filename,'-mat',var1,...,varN) удовольствия filename как MAT-файл и загружает из него только заданные переменные.

S = coder.load(filename,'-mat','-regexp', expr1,...,exprN) удовольствия filename как MAT-файл и загружает только переменные, соответствующие указанным регулярным выражениям.

Примеры

свернуть все

Создание кода для функции edgeDetect1 который дает нормализованное изображение, возвращает изображение, где обнаруживаются края относительно порогового значения. edgeDetect1 использование coder.load для загрузки ядра обнаружения границ из MAT-файла во время компиляции.

Сохраните ядро обнаружения краев Sobel в MAT-файле.

k = [1 2 1; 0 0 0; -1 -2 -1];

save sobel.mat k

Запишите функцию edgeDetect1.

function edgeImage = edgeDetect1(originalImage, threshold) %#codegen
assert(all(size(originalImage) <= [1024 1024]));
assert(isa(originalImage, 'double'));
assert(isa(threshold, 'double'));

S = coder.load('sobel.mat','k');
H = conv2(double(originalImage),S.k, 'same');
V = conv2(double(originalImage),S.k','same');
E = sqrt(H.*H + V.*V);
edgeImage = uint8((E > threshold) * 255);

Создание объекта конфигурации создания кода для статической библиотеки.

cfg = coder.config('lib');

Создание статической библиотеки для edgeDetect1.

codegen -report -config cfg edgeDetect1

codegen генерирует код C в codegen\lib\edgeDetect1 папка.

Создание кода для функции edgeDetect2 который дает нормализованное изображение, возвращает изображение, где обнаруживаются края относительно порогового значения. edgeDetect2 использование coder.load для загрузки ядра обнаружения границ из ASCII-файла во время компиляции.

Сохраните ядро обнаружения краев Sobel в ASCII-файле.

k = [1 2 1; 0 0 0; -1 -2 -1];
save sobel.dat k -ascii

Запишите функцию edgeDetect2.

function edgeImage = edgeDetect2(originalImage, threshold) %#codegen
assert(all(size(originalImage) <= [1024 1024]));
assert(isa(originalImage, 'double'));
assert(isa(threshold, 'double'));

k = coder.load('sobel.dat');
H = conv2(double(originalImage),k, 'same');
V = conv2(double(originalImage),k','same');
E = sqrt(H.*H + V.*V);
edgeImage = uint8((E > threshold) * 255);

Создание объекта конфигурации создания кода для статической библиотеки.

cfg = coder.config('lib');

Создание статической библиотеки для edgeDetect2.

codegen -report -config cfg edgeDetect2

codegen генерирует код C в codegen\lib\edgeDetect2 папка.

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

свернуть все

Имя файла. filename должен быть константой времени компиляции.

filename может включать расширение файла и полный или частичный путь. Если filename не имеет внутреннего номера, load ищет файл с именем filename.mat. Если filename имеет внутренний номер, отличный от .mat, load обрабатывает файл как данные ASCII.

Файлы ASCII должны содержать прямоугольную таблицу чисел с равным количеством элементов в каждой строке. Разделитель файла (символ между элементами в каждой строке) может быть пустым, запятой, точкой с запятой или символом табуляции. Файл может содержать комментарии MATLAB ® (строки, начинающиеся со знака процента ,%).

Пример: 'myFile.mat'

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

Пример: coder.load('myFile.mat','A*') загружает все переменные в файл, имена которых начинаются с A.

Регулярные выражения, указывающие переменные для загрузки, указанные как один или несколько векторов символов или строковых скаляров. Каждое регулярное выражение должно быть константой времени компиляции.

Пример: coder.load('myFile.mat', '-regexp', '^A') загружает только переменные, имена которых начинаются с A.

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

свернуть все

Если filename является MAT-файлом, S является массивом структуры.

Если filename является ASCII-файлом, S является массивом m-by-n типа double. m - количество строк в файле, n - количество значений в строке.

Ограничения

  • Аргументы для coder.load должны быть константами времени компиляции.

  • Продукция S должно быть именем структуры или массива без подстрочного индекса. Например, S(i) = coder.load('myFile.mat') не допускается.

  • Вы не можете использовать save для сохранения данных рабочей области в файл внутри функции, предназначенной для создания кода. Генератор кода не поддерживает save функция. Кроме того, вы не можете использовать coder.extrinsic с save. Перед созданием кода можно использовать save для сохранения данных рабочей области в файл.

Совет

  • coder.load загружает данные во время компиляции, а не во время выполнения. При создании кода MEX или кода для моделирования Simulink ® можно использовать функцию MATLAB.load для загрузки значений времени выполнения.

  • Если MAT-файл содержит неподдерживаемые конструкции, используйте coder.load(filename,var1,...,varN) для загрузки только поддерживаемых конструкций.

  • При создании кода в проекте MATLAB Coder™ генератор кода использует инкрементную генерацию кода для coder.load функция. Когда MAT-файл или ASCII-файл используется coder.load изменения, программное обеспечение перестраивает код.

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