资源简介

这是最优传输理论(optimal transport theory)实现的工具箱,里面包含了完整的matlab代码。代码绝对可行!!!

资源截图

代码片段和文件信息


clear all;
clc;
flat = @(x)x(:);
Cols = @(n0n1)sparse( flat(repmat(1:n1 [n0 1])) ...
             flat(reshape(1:n0*n1n0n1) ) ...
             ones(n0*n11) );
Rows = @(n0n1)sparse( flat(repmat(1:n0 [n1 1])) ...
             flat(reshape(1:n0*n1n0n1)‘ ) ...
             ones(n0*n11) );
Sigma = @(n0n1)[Rows(n0n1);Cols(n0n1)];
%% 
maxit = 1e4; tol = 1e-9;
otransp = @(Cp0p1)reshape( perform_linprog( ...
        Sigma(length(p0)length(p1)) ...
        [p0(:);p1(:)] C(:) 0 maxit tol) [length(p0) length(p1)] );
%% 
n0 = 60;
n1 = 80;
%% 
gauss = @(qac)a*randn(2q)+repmat(c(:) [1 q]);
X0 = randn(2n0)*.3;
X1 = [gauss(n1/2.5 [0 1.6]) gauss(n1/4.3 [-1 -1]) gauss(n1/4.3 [1 -1])];
%% 
normalize = @(a)a/sum(a(:));
p0 = normalize(rand(n01));
p1 = normalize(rand(n11));
%% 
myplot = @(xymscol)plot(xy ‘o‘ ‘MarkerSize‘ ms ‘MarkerEdgeColor‘ ‘k‘ ‘MarkerFaceColor‘ col ‘LineWidth‘ 2);
%%
clf; hold on;
for i=1:length(p0)
    myplot(X0(1i) X0(2i) p0(i)*length(p0)*10 ‘b‘);
end
for i=1:length(p1)
    myplot(X1(1i) X1(2i) p1(i)*length(p1)*10 ‘r‘);
end
axis([min(X1(1:)) max(X1(1:)) min(X1(2:)) max(X1(2:))]); axis off;
%% 
C = repmat( sum(X0.^2)‘ [1 n1] ) + ...
    repmat( sum(X1.^2) [n0 1] ) - 2*X0‘*X1;
%%
gamma = otransp(Cp0p1);
%%
fprintf(‘Number of non-zero: %d (n0+n1-1=%d)\n‘ full(sum(gamma(:)~=0)) n0+n1-1);
%%
fprintf(‘Constraints deviation (should be 0): %.2e %.2e.\n‘ norm(sum(gamma2)-p0(:))  norm(sum(gamma1)‘-p1(:)));
%%
[IJgammaij] = find(gamma);
%%
clf;
tlist = linspace(016);
for i=1:length(tlist)
    t=tlist(i);
    Xt = (1-t)*X0(:I) + t*X1(:J);
    subplot(23i);
    hold on;
    for i=1:length(gammaij)
        myplot(Xt(1i) Xt(2i) gammaij(i)*length(gammaij)*6 [t 0 1-t]);
    end
    title([‘t=‘ num2str(t2)]);
    axis([min(X1(1:)) max(X1(1:)) min(X1(2:)) max(X1(2:))]); axis off;
end
%%
n0 = 40;
n1 = n0;
%%
X0 = randn(2n0)*.3;
X1 = [gauss(n1/2.5 [0 1.6]) gauss(n1/4.3 [-1 -1]) gauss(n1/4.3 [1 -1])];
%%
p0 = ones(n01)/n0;
p1 = ones(n11)/n1;
%%
C = repmat( sum(X0.^2)‘ [1 n1] ) + ...
    repmat( sum(X1.^2) [n0 1] ) - 2*X0‘*X1;
%%
clf; hold on;
myplot(X0(1:) X0(2:) 10 ‘b‘);
myplot(X1(1:) X1(2:) 10 ‘r‘);
axis equal; axis off;
%%
gamma = otransp(Cp0p1);
%%
clf;
imageplot(gamma);
%%
clf; hold on;
[IJ~] = find(gamma);
for k=1:length(I)
    h = plot( [X0(1I(k)) X1(1J(k))] [X0(2I(k)) X1(2J(k))] ‘k‘ );
    set(h ‘LineWidth‘ 2);
end
myplot(X0(1:) X0(2:) 10 ‘b‘);
myplot(X1(1:) X1(2:) 10 ‘r‘);
axis equal; axis off;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-02-12 16:31  最优传输工具箱\
     文件        2655  2017-02-12 19:23  最优传输工具箱\numericaltour.m
     目录           0  2017-02-12 16:26  最优传输工具箱\toolbox_general\
     文件         729  2014-10-19 14:59  最优传输工具箱\toolbox_general\apply_multiple_ouput.m
     文件         669  2014-10-19 14:59  最优传输工具箱\toolbox_general\assign.m
     文件         149  2014-10-19 14:59  最优传输工具箱\toolbox_general\atan2.sci
     文件         127  2014-10-19 14:59  最优传输工具箱\toolbox_general\axis.sci
     文件        9362  2014-10-19 14:59  最优传输工具箱\toolbox_general\binornd.m
     文件          59  2014-10-19 14:59  最优传输工具箱\toolbox_general\camlight.sci
     文件          73  2014-10-19 14:59  最优传输工具箱\toolbox_general\cat3.m
     文件         721  2014-10-19 14:59  最优传输工具箱\toolbox_general\cat3.sci
     文件         421  2014-10-19 14:59  最优传输工具箱\toolbox_general\cell_add.m
     文件         161  2014-10-19 14:59  最优传输工具箱\toolbox_general\cell_get.m
     文件         190  2014-10-19 14:59  最优传输工具箱\toolbox_general\cell_get.sci
     文件         164  2014-10-19 14:59  最优传输工具箱\toolbox_general\cell_set.m
     文件         192  2014-10-19 14:59  最优传输工具箱\toolbox_general\cell_set.sci
     文件         185  2014-10-19 14:59  最优传输工具箱\toolbox_general\cell_sub.m
     文件         267  2014-10-19 14:59  最优传输工具箱\toolbox_general\cell_sub.sci
     文件         420  2014-10-19 14:59  最优传输工具箱\toolbox_general\certify_adjoint.m
     文件         471  2014-10-19 14:59  最优传输工具箱\toolbox_general\circshift.sci
     文件         342  2014-10-19 14:59  最优传输工具箱\toolbox_general\clamp.m
     文件         347  2014-10-19 14:59  最优传输工具箱\toolbox_general\clamp.sci
     文件          58  2014-10-19 14:59  最优传输工具箱\toolbox_general\colormap.sci
     文件         205  2014-10-19 14:59  最优传输工具箱\toolbox_general\compute_max.m
     文件         310  2014-10-19 14:59  最优传输工具箱\toolbox_general\compute_max.sci
     文件         201  2014-10-19 14:59  最优传输工具箱\toolbox_general\compute_min.m
     文件         306  2014-10-19 14:59  最优传输工具箱\toolbox_general\compute_min.sci
     文件         899  2014-10-19 14:59  最优传输工具箱\toolbox_general\crop.m
     文件         804  2014-10-19 14:59  最优传输工具箱\toolbox_general\crop.sci
     文件         851  2014-10-19 14:59  最优传输工具箱\toolbox_general\det3.m
     文件        1389  2014-10-19 14:59  最优传输工具箱\toolbox_general\dump_struct.m
............此处省略251个文件信息

评论

共有 条评论