38 lines
1.0 KiB
Mathematica
38 lines
1.0 KiB
Mathematica
|
|
%%*****************************************************************
|
||
|
|
%% smat: compute the matrix smat(x).
|
||
|
|
%%
|
||
|
|
%% M = smat(blk,x,isspM);
|
||
|
|
%%*****************************************************************
|
||
|
|
%% SDPT3: version 4.0
|
||
|
|
%% Copyright (c) 1997 by
|
||
|
|
%% Kim-Chuan Toh, Michael J. Todd, Reha H. Tutuncu
|
||
|
|
%% Last Modified: 16 Sep 2004
|
||
|
|
%%*****************************************************************
|
||
|
|
|
||
|
|
function M = smat(blk,xvec,isspM)
|
||
|
|
|
||
|
|
if (nargin < 3); isspM = zeros(size(blk,1),1); end
|
||
|
|
%%
|
||
|
|
if ~iscell(xvec)
|
||
|
|
if strcmp(blk{1},'s')
|
||
|
|
M = mexsmat(blk,xvec,isspM);
|
||
|
|
else
|
||
|
|
M = xvec;
|
||
|
|
end
|
||
|
|
else
|
||
|
|
M = cell(size(blk,1),1);
|
||
|
|
if (length(isspM)==1)
|
||
|
|
isspM = isspM*ones(size(blk,1),1);
|
||
|
|
end
|
||
|
|
for p=1:size(blk,1)
|
||
|
|
pblk = blk(p,:);
|
||
|
|
if strcmp(pblk{1},'s');
|
||
|
|
M{p} = mexsmat(pblk,xvec{p},isspM(p));
|
||
|
|
else
|
||
|
|
M{p} = xvec{p};
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
%%*********************************************************
|
||
|
|
|