29 lines
748 B
Matlab
Executable File
29 lines
748 B
Matlab
Executable File
function y = InstantiateElementWise(funName,varargin);
|
|
|
|
if length(varargin{1}) == 1
|
|
y = yalmip('define',funName,varargin{:});
|
|
else
|
|
y = [];
|
|
args = varargin{1};
|
|
dims = size(args);
|
|
args = args(:);
|
|
Base = getbase(args);
|
|
iD = ~any(Base(:,2:end),2);
|
|
iS = any(Base(:,2:end),2);
|
|
if nnz(iD)>0
|
|
iD = find(iD);
|
|
varargin{1} = args(iD);
|
|
yDoubles = feval(funName,varargin{:});
|
|
else
|
|
yDoubles = [];
|
|
iD = [];
|
|
end
|
|
iS = find(iS);
|
|
args = args(iS);
|
|
for i = 1:length(args)
|
|
varargin{1} = args(i);
|
|
y = [y;yalmip('define',funName,varargin{:})];
|
|
end
|
|
y = sparse([iD;iS],ones(length(iD)+length(iS),1),[yDoubles;y],prod(dims),1);
|
|
y = reshape(y,dims);
|
|
end |