Введите выборочные данные.
Предположим, что обратная нормальная PDF является соответствующей функцией ссылки для проблемы.
Задайте функцию с именем myInvNorm.m
это принимает значения и возвращает соответствующие значения инверсии стандартного нормального cdf.
function in = myInvNorm(mu) %#codegen
%myInvNorm Inverse of standard normal cdf for code generation
% myInvNorm is a GLM link function that accepts a numeric vector mu, and
% returns in, which is a numeric vector of corresponding values of the
% inverse of the standard normal cdf.
%
in = norminv(mu);
end
Задайте другую функцию с именем myDInvNorm.m
это принимает значения и возвращает соответствующие значения производной функции ссылки.
function din = myDInvNorm(mu) %#codegen
%myDInvNorm Derivative of inverse of standard normal cdf for code
%generation
% myDInvNorm corresponds to the derivative of the GLM link function
% myInvNorm. myDInvNorm accepts a numeric vector mu, and returns din,
% which is a numeric vector of corresponding derivatives of the inverse
% of the standard normal cdf.
%
din = 1./normpdf(norminv(mu));
end
Задайте другую функцию с именем myInvInvNorm.m
это принимает значения и возвращает соответствующие значения инверсии функции ссылки.
function iin = myInvInvNorm(mu) %#codegen
%myInvInvNorm Standard normal cdf for code generation
% myInvInvNorm is the inverse of the GLM link function myInvNorm.
% myInvInvNorm accepts a numeric vector mu, and returns iin, which is a
% numeric vector of corresponding values of the standard normal cdf.
%
iin = normcdf(mu);
end
Создайте массив структур, который задает каждую из функций ссылки. А именно, массив структур содержит поля под названием 'Link'
, 'Derivative'
, и 'Inverse'
. Соответствующие значения являются именами функций.
link =
struct with fields:
Link: 'myInvNorm'
Derivative: 'myDInvNorm'
Inverse: 'myInvInvNorm'
Соответствуйте GLM для y
на x
использование ссылки функционирует link
. Возвратите массив структур статистики.
b
2 1 вектор из коэффициентов регрессии.
В вашей текущей рабочей папке задайте функцию под названием classifyGLM.m
это:
Принимает измерения со столбцами, соответствующими тем в x
, коэффициенты регрессии, размерности которых соответствуют b
, функция ссылки, структура статистики GLM и любой допустимый glmval
аргумент пары "имя-значение"
Возвращает пределы погрешности доверительного интервала и предсказания
function [yhat,lo,hi] = classifyGLM(b,x,link,varargin) %#codegen
%CLASSIFYGLM Classify measurements using GLM model
% CLASSIFYGLM classifies the n observations in the n-by-1 vector x using
% the GLM model with regression coefficients b and link function link,
% and then returns the n-by-1 vector of predicted values in yhat.
% CLASSIFYGLM also returns margins of error for the predictions using
% additional information in the GLM statistics structure stats.
narginchk(3,Inf);
if(isstruct(varargin{1}))
stats = varargin{1};
[yhat,lo,hi] = glmval(b,x,link,stats,varargin{2:end});
else
yhat = glmval(b,x,link,varargin{:});
end
end
Сгенерируйте MEX-функцию от classifyGLM.m
. Поскольку C использует статический контроль типов, codegen
должен определить свойства всех переменных в файлах MATLAB® во время компиляции. Чтобы гарантировать, что MEX-функция может использовать те же входные параметры, используйте -args
аргумент, чтобы задать следующее в данном распоряжении:
Коэффициенты регрессии b
как постоянное время компиляции
Наблюдения в выборке x
Функция ссылки как постоянное время компиляции
Заканчивание статистики GLM как постоянное время компиляции
Назовите 'Confidence'
как постоянное время компиляции
Доверительный уровень 0.9
Чтобы определять аргументы как константы времени компиляции, используйте coder.Constant
.
Code generation successful.
codegen
генерирует файл MEX classifyGLM_mex.mexw64
в вашей текущей папке. Расширение файла зависит от вашей платформы системы.
Сравните предсказания при помощи glmval
и classifyGLM_mex
. Задайте аргументы пары "имя-значение" в том же порядке как в -args
аргумент в вызове codegen
.
agree1 =
logical
1
agree2 =
logical
1
agree3 =
logical
1
Сгенерированная MEX-функция производит те же предсказания как predict
.