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 генерирует код С в 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 генерирует код С в 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-на-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