⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mext.m

📁 GloptiPoly 3: moments, optimization and semidefinite programming. Gloptipoly 3 is intended to so
💻 M
字号:
function [x,maxerr] = mext(mm,nvar,degm)% MEXT - Extract the discrete support of a measure from its moment matrix%% With the calling syntax%%    X = MEXT(M,N,D)%% where M is the moment matrix (class DOUBLE), N the number of variables% and D the degree (necessarily even) the function returns the support points% in cell array X (empty if the extraction algorithm fails).%% See also @MEAS/MEXT  % Internally function MEXT builds a fake measure via MMM.M% and then calls @MEAS/MEXT  % D. Henrion, 4 August 2004% Last modified on 12 May 2006  global MMMif nargin < 3 error('Invalid calling syntax')endif (degm < 0) | rem(degm,2) error('Degree must be even and positive')endord = degm/2;% Create fake measurem = max(MMM.indmeas)+1;% Already existing indexing tables ?create = true;if isfield(MMM,'T') [v,o] = size(MMM.T); if (v >= nvar) & (o >= ord)  create = ~empty(MMM.T(v,o)); endend% Generate indexing tablesif create [bin,pow,bas] = genind(nvar,degm);else bin = MMM.T(nvar,ord).bin; pow = MMM.T(nvar,ord).pow; bas = MMM.T(nvar,ord).bas;end% Size of moment matrixdmm = bin(nvar,2+degm/2);if size(mm) ~= [dmm dmm] disp(['Moment matrix should have dimension ' int2str(dmm)]); error('Incompatible input arguments')end% Extract massif mm(1,1) < eps error('Nonpositive mass');endmmass = mm(1,1);% Normalize% mm = mm/mmass;% Extract Cholesky factor of moment matrix[U,S] = svd(mm);S = diag(S); r = length(S);drop = find(S(2:r) ./ S(1:r-1) < ranktol);if ~isempty(drop) rankM = drop(1);else rankM = r;endU = U(:,1:rankM)*diag(sqrt(S(1:rankM)));nb = rankM;% Apply @MEAS/MEXT% on the fake measureMMM.M{m}.nvar = nvar;MMM.M{m}.U = U;MMM.M{m}.mass = mmass;measx = mext(meas(m));% Output argumentsx = MMM.M{m}.sol;maxerr = MMM.M{m}.maxerr;% Remove fake measureMMM.M = {MMM.M{1:m-1}};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -