diff --git a/Contents.m b/Contents.m
index 2a06bf0..b6f1b90 100644
--- a/Contents.m
+++ b/Contents.m
@@ -13,7 +13,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/Contents.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/demos/Contents.m b/demos/Contents.m
index 9ab0090..efa3846 100644
--- a/demos/Contents.m
+++ b/demos/Contents.m
@@ -5,9 +5,10 @@
% gsp_demo_wavelet - Introduction to spectral wavelets
% gsp_demo_graph_embedding - Introduction to use embeddings
%
-% Convex optimization on graph
+% Convex optimization on graphs
% gsp_demo_graph_tv - Graph TV demonstration
% gsp_demo_wavelet_dn - Graph wavelets denoising
+% gsp_demo_learn_graph - Graph learning demonstration
%
% Sparse approximation
% gsp_demo_pyramid - Kron Pyramid applied to a signal
@@ -19,7 +20,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/demos/Contents.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/demos/gsp_demo.m b/demos/gsp_demo.m
index 449399c..a2d4212 100644
--- a/demos/gsp_demo.m
+++ b/demos/gsp_demo.m
@@ -128,7 +128,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/demos/gsp_demo.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/demos/gsp_demo_graph_embedding.m b/demos/gsp_demo_graph_embedding.m
index 5829fc6..f0a37a6 100644
--- a/demos/gsp_demo_graph_embedding.m
+++ b/demos/gsp_demo_graph_embedding.m
@@ -90,7 +90,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/demos/gsp_demo_graph_embedding.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/demos/gsp_demo_graph_tv.m b/demos/gsp_demo_graph_tv.m
index 08f1a59..12866e6 100644
--- a/demos/gsp_demo_graph_tv.m
+++ b/demos/gsp_demo_graph_tv.m
@@ -68,7 +68,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/demos/gsp_demo_graph_tv.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/demos/gsp_demo_learn_graph.m b/demos/gsp_demo_learn_graph.m
index db06bb3..1e421d3 100644
--- a/demos/gsp_demo_learn_graph.m
+++ b/demos/gsp_demo_learn_graph.m
@@ -26,12 +26,13 @@
% subplot(2,2,4); scatter(xc, yc, 700, X(:,4), '.');
% title('4th smooth signal'); axis off; colorbar;
%
-% Figure 1: caption
+% Figure 1: Different signals
%
%
%
% We can compute the pairwise distances of the features and learn a graph
% using them:
+%
% Z1 = gsp_distanz(X(:, 1)').^2;
% W1 = gsp_learn_graph_log_degrees(Z1, 1.5, 1, params);
%
@@ -58,7 +59,7 @@
% subplot(2,2,4); gsp_plot_edges(G4, params_plot);
% title('graph learned from 4th smooth signal');
%
-% Figure 2: caption
+% Figure 2: Different graphs learned
%
%
%
@@ -77,14 +78,14 @@
% figure; gsp_plot_graph(G, params_plot);
% title('Graph with edges learned from above 4 signals');
%
-% Figure 3: caption
+% Figure 3: Graph with edges learned from above 4 signals
%
%
%
% This is close to the graph that we would learn using the acutal
% coordinates as features. So why does it work so well? We can see that
-% the pattern of the pairwise distances using these features is similar to
-% the one of the pairwise geometric distances between nodes:
+% the pattern of the pairwise distances using these features is similar
+% to the one of the pairwise geometric distances between nodes:
%
% figure;
% subplot(1, 2, 1);
@@ -94,13 +95,16 @@
% imagesc(gsp_distanz([xc, yc]'));
% title('Pairwise distances computed from features');
%
-% Figure 4: caption
+% Figure 4: Geometric pairwise distances between nodes
%
%
%
+% Figure 5: Pairwise distances computed from features
+%
+%
%
-% The functions available for learning a graph are
-% GSP_LEARN_GRAPH_LOG_DEGREES and GSP_LEARN_GRAPH_L2_DEGREES.
+% The functions available for learning a graph are
+% GSP_LEARN_GRAPH_LOG_DEGREES and GSP_LEARN_GRAPH_L2_DEGREES.
%
%
% References:
@@ -114,7 +118,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/demos/gsp_demo_learn_graph.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/demos/gsp_demo_pyramid.m b/demos/gsp_demo_pyramid.m
index 9af9c9f..1694393 100644
--- a/demos/gsp_demo_pyramid.m
+++ b/demos/gsp_demo_pyramid.m
@@ -85,7 +85,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/demos/gsp_demo_pyramid.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/demos/gsp_demo_wavelet.m b/demos/gsp_demo_wavelet.m
index 777e482..8a9d877 100644
--- a/demos/gsp_demo_wavelet.m
+++ b/demos/gsp_demo_wavelet.m
@@ -204,7 +204,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/demos/gsp_demo_wavelet.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/demos/gsp_demo_wavelet_dn.m b/demos/gsp_demo_wavelet_dn.m
index e35f78d..5690f93 100644
--- a/demos/gsp_demo_wavelet_dn.m
+++ b/demos/gsp_demo_wavelet_dn.m
@@ -19,7 +19,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/demos/gsp_demo_wavelet_dn.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/embedding/Contents.m b/embedding/Contents.m
index a56de36..6fcb5e2 100644
--- a/embedding/Contents.m
+++ b/embedding/Contents.m
@@ -16,7 +16,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/embedding/Contents.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/embedding/gsp_compute_coordinates.m b/embedding/gsp_compute_coordinates.m
index 30f17cb..8935b8b 100644
--- a/embedding/gsp_compute_coordinates.m
+++ b/embedding/gsp_compute_coordinates.m
@@ -40,7 +40,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/embedding/gsp_compute_coordinates.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/embedding/gsp_isomap.m b/embedding/gsp_isomap.m
index 4c92321..80baeb0 100644
--- a/embedding/gsp_isomap.m
+++ b/embedding/gsp_isomap.m
@@ -46,7 +46,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/embedding/gsp_isomap.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/embedding/gsp_laplacian_eigenmaps.m b/embedding/gsp_laplacian_eigenmaps.m
index 83a5274..331b810 100644
--- a/embedding/gsp_laplacian_eigenmaps.m
+++ b/embedding/gsp_laplacian_eigenmaps.m
@@ -33,7 +33,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/embedding/gsp_laplacian_eigenmaps.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/embedding/gsp_lle.m b/embedding/gsp_lle.m
index 8cfd076..b5baef1 100644
--- a/embedding/gsp_lle.m
+++ b/embedding/gsp_lle.m
@@ -43,7 +43,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/embedding/gsp_lle.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/embedding/gsp_weight2distance.m b/embedding/gsp_weight2distance.m
index 7526cbf..3d9d0a7 100644
--- a/embedding/gsp_weight2distance.m
+++ b/embedding/gsp_weight2distance.m
@@ -32,7 +32,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/embedding/gsp_weight2distance.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/Contents.m b/filters/Contents.m
index 3433d21..b9edad2 100644
--- a/filters/Contents.m
+++ b/filters/Contents.m
@@ -53,7 +53,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/Contents.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_approx_filter.m b/filters/gsp_approx_filter.m
index ea90648..28753ab 100644
--- a/filters/gsp_approx_filter.m
+++ b/filters/gsp_approx_filter.m
@@ -46,7 +46,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_approx_filter.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_design_abspline.m b/filters/gsp_design_abspline.m
index a3151fe..ac30ced 100644
--- a/filters/gsp_design_abspline.m
+++ b/filters/gsp_design_abspline.m
@@ -57,7 +57,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_design_abspline.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_design_can_dual.m b/filters/gsp_design_can_dual.m
index 9543fb7..2013c6b 100644
--- a/filters/gsp_design_can_dual.m
+++ b/filters/gsp_design_can_dual.m
@@ -38,7 +38,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_design_can_dual.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_design_expwin.m b/filters/gsp_design_expwin.m
index af321d7..c6e3ffe 100644
--- a/filters/gsp_design_expwin.m
+++ b/filters/gsp_design_expwin.m
@@ -36,7 +36,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_design_expwin.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_design_half_cosine.m b/filters/gsp_design_half_cosine.m
index d86c272..baeffc3 100644
--- a/filters/gsp_design_half_cosine.m
+++ b/filters/gsp_design_half_cosine.m
@@ -38,7 +38,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_design_half_cosine.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_design_heat.m b/filters/gsp_design_heat.m
index 2761c2e..2c032c4 100644
--- a/filters/gsp_design_heat.m
+++ b/filters/gsp_design_heat.m
@@ -42,7 +42,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_design_heat.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_design_held.m b/filters/gsp_design_held.m
index b49aa27..51f4a71 100644
--- a/filters/gsp_design_held.m
+++ b/filters/gsp_design_held.m
@@ -47,7 +47,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_design_held.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_design_itersine.m b/filters/gsp_design_itersine.m
index a667f56..4dd9162 100644
--- a/filters/gsp_design_itersine.m
+++ b/filters/gsp_design_itersine.m
@@ -47,7 +47,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_design_itersine.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_design_mexican_hat.m b/filters/gsp_design_mexican_hat.m
index 4d1380b..d338e87 100644
--- a/filters/gsp_design_mexican_hat.m
+++ b/filters/gsp_design_mexican_hat.m
@@ -59,7 +59,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_design_mexican_hat.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_design_meyer.m b/filters/gsp_design_meyer.m
index 1756fdc..df91a2a 100644
--- a/filters/gsp_design_meyer.m
+++ b/filters/gsp_design_meyer.m
@@ -39,7 +39,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_design_meyer.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_design_papadakis.m b/filters/gsp_design_papadakis.m
index 62b46b8..a656379 100644
--- a/filters/gsp_design_papadakis.m
+++ b/filters/gsp_design_papadakis.m
@@ -43,7 +43,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_design_papadakis.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_design_regular.m b/filters/gsp_design_regular.m
index d5caada..2aee5eb 100644
--- a/filters/gsp_design_regular.m
+++ b/filters/gsp_design_regular.m
@@ -51,7 +51,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_design_regular.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_design_simoncelli.m b/filters/gsp_design_simoncelli.m
index a818fc4..d8cc1d3 100644
--- a/filters/gsp_design_simoncelli.m
+++ b/filters/gsp_design_simoncelli.m
@@ -43,7 +43,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_design_simoncelli.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_design_simple_tf.m b/filters/gsp_design_simple_tf.m
index 7152079..afd894e 100644
--- a/filters/gsp_design_simple_tf.m
+++ b/filters/gsp_design_simple_tf.m
@@ -40,7 +40,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_design_simple_tf.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_design_smooth_indicator.m b/filters/gsp_design_smooth_indicator.m
index dd59f0e..32fea43 100644
--- a/filters/gsp_design_smooth_indicator.m
+++ b/filters/gsp_design_smooth_indicator.m
@@ -36,7 +36,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_design_smooth_indicator.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_design_warped_translates.m b/filters/gsp_design_warped_translates.m
index 82966e0..2302072 100644
--- a/filters/gsp_design_warped_translates.m
+++ b/filters/gsp_design_warped_translates.m
@@ -104,7 +104,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_design_warped_translates.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_evaluate_can_dual.m b/filters/gsp_evaluate_can_dual.m
index 4f285f1..51d8c6d 100644
--- a/filters/gsp_evaluate_can_dual.m
+++ b/filters/gsp_evaluate_can_dual.m
@@ -19,7 +19,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_evaluate_can_dual.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_filter.m b/filters/gsp_filter.m
index e0b6e34..02b5d93 100644
--- a/filters/gsp_filter.m
+++ b/filters/gsp_filter.m
@@ -18,7 +18,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_filter.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_filter_analysis.m b/filters/gsp_filter_analysis.m
index 28e8705..c9495cf 100644
--- a/filters/gsp_filter_analysis.m
+++ b/filters/gsp_filter_analysis.m
@@ -71,7 +71,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_filter_analysis.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
@@ -169,7 +169,7 @@
end
for ii=1:Nf
c((1:G.N)+G.N * (ii-1),:)= gsp_igft(G, ...
- repmat(fie(:,ii),1,Nv) ...
+ repmat(conj(fie(:,ii)),1,Nv) ...
.* gsp_gft(G, s));
end
diff --git a/filters/gsp_filter_evaluate.m b/filters/gsp_filter_evaluate.m
index d77352e..4c06893 100644
--- a/filters/gsp_filter_evaluate.m
+++ b/filters/gsp_filter_evaluate.m
@@ -17,7 +17,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_filter_evaluate.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_filter_inverse.m b/filters/gsp_filter_inverse.m
index 7d7537a..6aaddf4 100644
--- a/filters/gsp_filter_inverse.m
+++ b/filters/gsp_filter_inverse.m
@@ -51,7 +51,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_filter_inverse.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_filter_synthesis.m b/filters/gsp_filter_synthesis.m
index f332d5e..2c7eea5 100644
--- a/filters/gsp_filter_synthesis.m
+++ b/filters/gsp_filter_synthesis.m
@@ -70,7 +70,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_filter_synthesis.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
@@ -161,9 +161,9 @@
s=zeros(G.N,size(c,2));
for ii=1:Nf
- s = s + gsp_igft(conj(G.U), ...
- repmat(fie(:,ii),1,Nv) ...
- .* gsp_gft(G, c((1:G.N)+G.N * (ii-1),:)));
+ s = s + G.U * ...
+ (repmat(fie(:,ii),1,Nv) ...
+ .* (G.U' * c((1:G.N)+G.N * (ii-1),:)));
end
diff --git a/filters/gsp_filterbank_bounds.m b/filters/gsp_filterbank_bounds.m
index be0da10..213f20c 100644
--- a/filters/gsp_filterbank_bounds.m
+++ b/filters/gsp_filterbank_bounds.m
@@ -24,7 +24,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_filterbank_bounds.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_filterbank_matrix.m b/filters/gsp_filterbank_matrix.m
index ff6305a..0d37d7f 100644
--- a/filters/gsp_filterbank_matrix.m
+++ b/filters/gsp_filterbank_matrix.m
@@ -22,7 +22,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_filterbank_matrix.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_gabor_filterbank.m b/filters/gsp_gabor_filterbank.m
index edfcf58..a062bf7 100644
--- a/filters/gsp_gabor_filterbank.m
+++ b/filters/gsp_gabor_filterbank.m
@@ -16,7 +16,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_gabor_filterbank.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_mat2vec.m b/filters/gsp_mat2vec.m
index a59bc84..bc4c2af 100644
--- a/filters/gsp_mat2vec.m
+++ b/filters/gsp_mat2vec.m
@@ -15,7 +15,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_mat2vec.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_multiply_filters.m b/filters/gsp_multiply_filters.m
index 8edfef6..692b0a0 100644
--- a/filters/gsp_multiply_filters.m
+++ b/filters/gsp_multiply_filters.m
@@ -15,7 +15,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_multiply_filters.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_test_duality.m b/filters/gsp_test_duality.m
index 7b8a382..59e85a9 100644
--- a/filters/gsp_test_duality.m
+++ b/filters/gsp_test_duality.m
@@ -28,7 +28,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_test_duality.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_test_duality_coefficient.m b/filters/gsp_test_duality_coefficient.m
index 3016b0b..edc4ba4 100644
--- a/filters/gsp_test_duality_coefficient.m
+++ b/filters/gsp_test_duality_coefficient.m
@@ -19,7 +19,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_test_duality_coefficient.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_tighten_filter.m b/filters/gsp_tighten_filter.m
index eb36a79..71dd52b 100644
--- a/filters/gsp_tighten_filter.m
+++ b/filters/gsp_tighten_filter.m
@@ -17,7 +17,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_tighten_filter.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_vec2mat.m b/filters/gsp_vec2mat.m
index e39d366..6fe0092 100644
--- a/filters/gsp_vec2mat.m
+++ b/filters/gsp_vec2mat.m
@@ -14,7 +14,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_vec2mat.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_warp_filter.m b/filters/gsp_warp_filter.m
index a827481..a1e6ac0 100644
--- a/filters/gsp_warp_filter.m
+++ b/filters/gsp_warp_filter.m
@@ -15,7 +15,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_warp_filter.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/gsp_wlog_scales.m b/filters/gsp_wlog_scales.m
index a26da9b..8827206 100644
--- a/filters/gsp_wlog_scales.m
+++ b/filters/gsp_wlog_scales.m
@@ -27,7 +27,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/gsp_wlog_scales.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/utils/gsp_erdos_renyi_density.m b/filters/utils/gsp_erdos_renyi_density.m
index a99ad4f..7446524 100644
--- a/filters/utils/gsp_erdos_renyi_density.m
+++ b/filters/utils/gsp_erdos_renyi_density.m
@@ -25,7 +25,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/utils/gsp_erdos_renyi_density.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/utils/gsp_erdos_renyi_density_normalized.m b/filters/utils/gsp_erdos_renyi_density_normalized.m
index adf5663..898f73b 100644
--- a/filters/utils/gsp_erdos_renyi_density_normalized.m
+++ b/filters/utils/gsp_erdos_renyi_density_normalized.m
@@ -19,7 +19,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/utils/gsp_erdos_renyi_density_normalized.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/utils/gsp_erdos_renyi_warp.m b/filters/utils/gsp_erdos_renyi_warp.m
index c56d4bf..c25e27f 100644
--- a/filters/utils/gsp_erdos_renyi_warp.m
+++ b/filters/utils/gsp_erdos_renyi_warp.m
@@ -7,7 +7,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/utils/gsp_erdos_renyi_warp.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/utils/gsp_free_conv_norm_semi.m b/filters/utils/gsp_free_conv_norm_semi.m
index 171ba64..5332717 100644
--- a/filters/utils/gsp_free_conv_norm_semi.m
+++ b/filters/utils/gsp_free_conv_norm_semi.m
@@ -8,7 +8,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/utils/gsp_free_conv_norm_semi.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/utils/gsp_mono_cubic_warp_fn.m b/filters/utils/gsp_mono_cubic_warp_fn.m
index add9cc6..55834c4 100644
--- a/filters/utils/gsp_mono_cubic_warp_fn.m
+++ b/filters/utils/gsp_mono_cubic_warp_fn.m
@@ -7,7 +7,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/utils/gsp_mono_cubic_warp_fn.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/utils/gsp_pwl_warp_fn.m b/filters/utils/gsp_pwl_warp_fn.m
index df824de..a515c36 100644
--- a/filters/utils/gsp_pwl_warp_fn.m
+++ b/filters/utils/gsp_pwl_warp_fn.m
@@ -19,7 +19,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/utils/gsp_pwl_warp_fn.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/utils/gsp_random_regular_density.m b/filters/utils/gsp_random_regular_density.m
index 1eeec35..7784429 100644
--- a/filters/utils/gsp_random_regular_density.m
+++ b/filters/utils/gsp_random_regular_density.m
@@ -19,7 +19,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/utils/gsp_random_regular_density.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/filters/utils/histnorm.m b/filters/utils/histnorm.m
index 81580f2..cc023c5 100644
--- a/filters/utils/histnorm.m
+++ b/filters/utils/histnorm.m
@@ -24,7 +24,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/filters/utils/histnorm.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graph_ml/.gitignore b/graph_ml/.gitignore
deleted file mode 100644
index 8c5353a..0000000
--- a/graph_ml/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-figures/*
\ No newline at end of file
diff --git a/graph_ml/demo_classification_graph.m b/graph_ml/demo_classification_graph.m
deleted file mode 100644
index 3f2c1dd..0000000
--- a/graph_ml/demo_classification_graph.m
+++ /dev/null
@@ -1,128 +0,0 @@
-
-%% Initialization
-%
-% Url: http://lts2research.epfl.ch/gsp/doc/graph_ml/demo_classification_graph.php
-
-% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
-%
-% This program is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
-%
-% This program is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program. If not, see .
-
-% If you use this toolbox please kindly cite
-% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
-% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
-% ArXiv e-prints, Aug. 2014.
-% http://arxiv.org/abs/1408.5781
-
-clear
-close all;
-
-%% Handle the data
-% USPS dataset
-[X_obs, labels_obs, X_unobs, labels_unobs] = load_usps_full();
-X_obs = X_obs';
-X_unobs = X_unobs';
-
-N_obs = 1000;
-N_unobs = 1000;
-
-ind_kept_obs = randperm(size(X_obs, 1), N_obs);
-ind_kept_unobs = randperm(size(X_unobs, 1), N_unobs);
-
-X_obs = X_obs(ind_kept_obs, :);
-labels_obs = labels_obs(ind_kept_obs);
-X_unobs = X_unobs(ind_kept_unobs, :);
-labels_unobs = labels_unobs(ind_kept_unobs);
-
-[labels_obs, ind] = sort(labels_obs);
-X_obs = X_obs(ind, :);
-
-[labels_unobs, ind] = sort(labels_unobs);
-X_unobs = X_unobs(ind, :);
-
-% sizes
-N_obs = size(X_obs, 1);
-N_unobs = size(X_unobs, 1);
-
-% % Synthetic dataset
-% % sizes
-% Nl = 10;
-% Nnl = 100;
-% x = rand(Nl,2);
-% xx = rand(Nnl,2);
-% y = double(x(:,1)<0.5);
-% yy = double(xx(:,1)<0.5);
-
-
-
-%% Define the error function
-
-err = @(x) sum(sum(abs(x((N_obs+1):end)-labels_unobs)>0))/N_unobs;
-
-
-%% Create the graphs
-param.use_flann = 1;
-param.k = 6;
-
-G = gsp_nn_graph([X_obs;X_unobs],param);
-G = gsp_create_laplacian(G,'normalized');
-
-
-% Make the assotiated mask
-M = zeros(N_obs+N_unobs,1);
-M(1:N_obs) = 1;
-
-% Starting point
-y_start = [labels_obs; zeros(N_unobs,1)]';
-
-%% Method 1: TIK
-
-s_tik = gsp_classification_tik(G,M,y_start, 0 , param);
-err_tik = err(s_tik);
-
-%% Method 2: TV
-param.maxit = 2000;
-s_tv = gsp_classification_tv(G,M,y_start, 0 , param);
-err_tv = err(s_tv);
-
-%% Method 3: TV
-s_tv_new = gsp_classification_tv_new(G,M,y_start, 0 , param);
-err_tv_new = err(s_tv_new);
-
-%% Plotting: only for synthetic dataset
-%
-% figure(1)
-%
-% subplot(221);
-% gsp_plot_signal(G,[labels_obs;labels_unobs]);
-% title('Original signal')
-% subplot(222);
-% gsp_plot_signal(G,M);
-% title('Mask')
-%
-% subplot(223);
-% gsp_plot_signal(G,s_tik);
-% title('Tikonov classifier')
-%
-% subplot(224);
-% gsp_plot_signal(G,s_tv);
-% title('TV classifier')
-
-
-%%
-figure; plot(s_tv(N_obs+1: end)); hold on; plot(labels_unobs)
-figure; plot(s_tik(N_obs+1: end)); hold on; plot(labels_unobs)
-figure; plot(s_tv_new(N_obs+1: end)); hold on; plot(labels_unobs)
-
-
diff --git a/graph_ml/graph_mlcl_compare_all.m b/graph_ml/graph_mlcl_compare_all.m
deleted file mode 100644
index 06e7140..0000000
--- a/graph_ml/graph_mlcl_compare_all.m
+++ /dev/null
@@ -1,424 +0,0 @@
-function [rel_error, name ] = graph_mlcl_compare_all(x,xx,y,yy, param)
-%GRAPH_ML_COMPARE_ALL Compare all methods for a classification problem
-%
-% Url: http://lts2research.epfl.ch/gsp/doc/graph_ml/graph_mlcl_compare_all.php
-
-% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
-%
-% This program is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
-%
-% This program is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program. If not, see .
-
-% If you use this toolbox please kindly cite
-% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
-% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
-% ArXiv e-prints, Aug. 2014.
-% http://arxiv.org/abs/1408.5781
-
-if nargin<5
- param = struct;
-end
-
-if ~isfield(param,'verbose'), param.verbose = 1; end
-if ~isfield(param,'tol'), param.tol = 1e-8; end
-if ~isfield(param,'k'), param.k = 10; end
-if ~isfield(param,'maxit'), param.maxit = 2000; end
-
-
-%% Error function
-Nl = size(x, 1);
-ev = @(x) sum(sum(abs(x((Nl+1):end)-yy)>0))/numel(yy);
-rel_error = [];
-name = {};
-%% Prepare data
-
-xtot = [x; xx];
-
-
-M = zeros(size(xtot,1),1);
-M(1:size(x, 1)) = 1;
-ytot = [y; yy];
-ytot = M.*ytot;
-
-if param.verbose
- fprintf('Start the simulations \n ');
-end
-
-
-
-
-
-
-
-%% KNN classifier
-methodname = 'KNN Classifier';
-
-clear paramm
-
-paramm = param;
-paramm.use_flann = 0;
-paramm.weighted = 0;
-
-Gcknn = gsp_knn_classify_graph(x,xx,paramm);
-s = gsp_classification_knn(Gcknn,M,ytot);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-%% KNN classifier FLANN
-methodname = 'KNN Classifier FLANN';
-
-clear paramm
-
-paramm = param;
-paramm.use_flann = 1;
-paramm.weighted = 1;
-
-Gcknnflann = gsp_knn_classify_graph(x,xx,paramm);
-s = gsp_classification_knn(Gcknnflann,M,ytot);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname, param);
-
-
-%% KNN classifier weighted
-methodname = 'KNN Classifier weighted';
-
-clear paramm
-
-paramm = param;
-paramm.use_flann = 0;
-paramm.weighted = 1;
-
-
-Gcknnw = gsp_knn_classify_graph(x,xx,paramm);
-s = gsp_classification_knn(Gcknnw,M,ytot);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-%% KNN classifier weighted FLANN
-methodname = 'KNN Classifier weighted FLANN';
-
-clear paramm
-
-paramm = param;
-paramm.use_flann = 1;
-paramm.weighted = 1;
-
-Gcknnflannw = gsp_knn_classify_graph(x,xx,paramm);
-s = gsp_classification_knn(Gcknnflannw,M,ytot);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname, param);
-
-
-
-%% TIK
-methodname = 'TIK';
-
-clear paramm
-
-paramm = param;
-paramm.use_flann = 0;
-
-G = gsp_nn_graph(xtot,paramm);
-
-s = gsp_classification_tik(G,M,ytot, 0 , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-
-%% TIK FLANN
-methodname = 'TIK FLANN';
-
-clear paramm
-
-paramm = param;
-paramm.use_flann = 1;
-
-Gflann = gsp_nn_graph(xtot,paramm);
-
-s = gsp_classification_tik(Gflann,M,ytot, 0 , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-
-%% TIK non weighted
-methodname = 'TIK non weighted';
-
-clear paramm
-
-paramm = param;
-paramm.use_flann = 0;
-
-Gknn = gsp_nn_graph(xtot,paramm);
-Gknn.W = Gknn.W > 0;
-Gknn = gsp_graph_default_parameters(Gknn);
-
-s = gsp_classification_tik(Gknn,M,ytot, 0 , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-
-%% TIK non weighted FLANN
-methodname = 'TIK non weighted FLANN';
-
-clear paramm
-
-paramm = param;
-paramm.use_flann = 1;
-
-Gknnflann = gsp_nn_graph(xtot,paramm);
-Gknnflann.W = Gknnflann.W > 0;
-Gknnflann = gsp_graph_default_parameters(Gknnflann);
-
-s = gsp_classification_tik(Gknnflann,M,ytot, 0 , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-
-
-
-%% TIK normalized
-methodname = 'TIK normalized';
-
-G = gsp_create_laplacian(G,'normalized');
-s = gsp_classification_tik(G,M,ytot, 0 , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-
-%% TIK normalized FLANN
-methodname = 'TIK normalized FLANN';
-
-Gflann = gsp_create_laplacian(Gflann,'normalized');
-s = gsp_classification_tik(Gflann,M,ytot, 0 , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-
-%% TIK non weighted - normalized
-methodname = 'TIK non weighted - normalized';
-
-
-Gknn = gsp_create_laplacian(Gknn,'normalized');
-s = gsp_classification_tik(Gknn,M,ytot, 0 , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-
-%% TIK non weighted - normalized FLANN
-methodname = 'TIK non weighted - normalized FLANN';
-
-Gknnflann = gsp_create_laplacian(Gknnflann,'normalized');
-s = gsp_classification_tik(Gknnflann,M,ytot, 0 , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-%% TIK tau 0.01
-methodname = 'TIK - tau 0.01';
-
-G = gsp_create_laplacian(G,'combinatorial');
-s = gsp_classification_tik(G,M,ytot, 0.01*G.Ne/G.N , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-%% TIK - tau 0.01 normalized
-methodname = 'TIK - tau 0.01 normalized';
-
-G = gsp_create_laplacian(G,'normalized');
-s = gsp_classification_tik(G,M,ytot, 0.01*G.Ne/G.N , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-%% TIK tau 0.1
-methodname = 'TIK - tau 0.1';
-
-G = gsp_create_laplacian(G,'combinatorial');
-s = gsp_classification_tik(G,M,ytot, 0.1*G.Ne/G.N , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-%% TIK - tau 0.1 normalized
-methodname = 'TIK - tau 0.1 normalized';
-
-G = gsp_create_laplacian(G,'normalized');
-s = gsp_classification_tik(G,M,ytot, 0.1*G.Ne/G.N , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-%% TIK tau 1
-methodname = 'TIK - tau 1';
-
-G = gsp_create_laplacian(G,'combinatorial');
-s = gsp_classification_tik(G,M,ytot, 1*G.Ne/G.N , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-%% TIK - tau 1 normalized
-methodname = 'TIK - tau 1 normalized';
-
-G = gsp_create_laplacian(G,'normalized');
-s = gsp_classification_tik(G,M,ytot, G.Ne/G.N , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-%% TV tau 0.01
-methodname = 'TV - tau 0.01';
-
-G = gsp_create_laplacian(G,'combinatorial');
-s = gsp_classification_tv(G,M,ytot, 0.01*G.Ne/G.N , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-%% TV - tau 0.01 normalized
-methodname = 'TV - tau 0.01 normalized';
-
-G = gsp_create_laplacian(G,'normalized');
-s = gsp_classification_tv(G,M,ytot, 0.01*G.Ne/G.N , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-%% TV tau 0.1
-methodname = 'TV - tau 0.1';
-
-G = gsp_create_laplacian(G,'combinatorial');
-s = gsp_classification_tv(G,M,ytot, 0.1*G.Ne/G.N , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-%% TV - tau 0.1 normalized
-methodname = 'TV - tau 0.1 normalized';
-
-G = gsp_create_laplacian(G,'normalized');
-s = gsp_classification_tv(G,M,ytot, 0.1*G.Ne/G.N , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-%% TV tau 1
-methodname = 'TV - tau 1';
-
-G = gsp_create_laplacian(G,'combinatorial');
-s = gsp_classification_tv(G,M,ytot, 1*G.Ne/G.N , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-%% TV - tau 1 normalized
-methodname = 'TV - tau 1 normalized';
-
-G = gsp_create_laplacian(G,'normalized');
-s = gsp_classification_tv(G,M,ytot, G.Ne/G.N , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-
-%% TV
-methodname = 'TV';
-
-G = gsp_create_laplacian(G,'combinatorial');
-s = gsp_classification_tv(G,M,ytot, 0 , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-
-%% TV FLANN
-methodname = 'TV FLANN';
-
-Gflann = gsp_create_laplacian(Gflann,'combinatorial');
-s = gsp_classification_tv(Gflann,M,ytot, 0 , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-
-%% TV non weighted
-methodname = 'TV non weighted ';
-
-
-Gknn = gsp_create_laplacian(Gknn,'combinatorial');
-s = gsp_classification_tv(Gknn,M,ytot, 0 , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-
-%% TV non weighted FLANN
-methodname = 'TV non weighted FLANN';
-
-Gknnflann = gsp_create_laplacian(Gknnflann,'combinatorial');
-s = gsp_classification_tv(Gknnflann,M,ytot, 0 , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-
-
-%% TV normalized
-methodname = 'TV normalized';
-
-G = gsp_create_laplacian(G,'normalized');
-s = gsp_classification_tv(G,M,ytot, 0 , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-
-%% TV normalized FLANN
-methodname = 'TV normalized FLANN';
-
-Gflann = gsp_create_laplacian(Gflann,'normalized');
-s = gsp_classification_tv(Gflann,M,ytot, 0 , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-
-%% TV non weighted - normalized
-methodname = 'TV non weighted - normalized';
-
-
-Gknn = gsp_create_laplacian(Gknn,'normalized');
-s = gsp_classification_tv(Gknn,M,ytot, 0 , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-
-%% TV non weighted - normalized FLANN
-methodname = 'TV non weighted - normalized FLANN';
-
-Gknnflann = gsp_create_laplacian(Gknnflann,'normalized');
-s = gsp_classification_tv(Gknnflann,M,ytot, 0 , param);
-
-[rel_error, name ] = update_values(ev(s), rel_error, name , methodname,param);
-
-%%
-if param.verbose
- fprintf('Ends of simulations \n ');
- bar(rel_error)
- set(gca,'XTickLabel',name)
-
-end
-
-%%
-end
-
-
-
-
-function [rel_error, name ] = update_values(e, rel_error, name , methodname, param)
-
-rel_error = [rel_error; e];
-N = length(rel_error);
-if N==1
- name = {methodname};
-else
- name = {name{1:(N-1)},methodname};
-end
-
-if param.verbose
- fprintf([' Sim: %2i, %3.2f percent -- ', methodname,'\n ' ],N,e*100);
-end
-
-end
diff --git a/graph_ml/gsp_classification_knn.m b/graph_ml/gsp_classification_knn.m
deleted file mode 100644
index 7a7214a..0000000
--- a/graph_ml/gsp_classification_knn.m
+++ /dev/null
@@ -1,59 +0,0 @@
-function sol = gsp_classification_knn(G ,M, y )
-%GSP_CLASSIFICATION_KNN Classification using knn
-% Usage: sol = gsp_classification_knn(G ,M, y );
-%
-% Input parameters:
-% G : Graph
-% M : Mask (to determine with label is known)
-% y : label (total size of the problem)
-%
-% Output parameters:
-% sol : Solution of the problem
-%
-% Warning: In order to use this function, you have to use a special
-% graph. This graph can be computed with the function:
-% GSP_KNN_CLASSIFY_GRAPH .
-%
-% See also: gsp_classification_tik gsp_classification_tv
-%
-% Url: http://lts2research.epfl.ch/gsp/doc/graph_ml/gsp_classification_knn.php
-
-% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
-%
-% This program is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
-%
-% This program is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program. If not, see .
-
-% If you use this toolbox please kindly cite
-% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
-% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
-% ArXiv e-prints, Aug. 2014.
-% http://arxiv.org/abs/1408.5781
-
-% Author: Nathanael Perraudin
-% Date : 24 July 2015
-
-
-
-%%
-
-B = gsp_classification_matrix(y);
-
-sol = gsp_regression_knn(G, M, B );
-
-minf = min(y);
-sol = gsp_matrix2label(sol,minf);
-
-
-
-end
diff --git a/graph_ml/gsp_classification_matrix.m b/graph_ml/gsp_classification_matrix.m
deleted file mode 100644
index c649ccf..0000000
--- a/graph_ml/gsp_classification_matrix.m
+++ /dev/null
@@ -1,49 +0,0 @@
-function B = gsp_classification_matrix(f)
-%GSP_CLASSIFICATION_MATRIX Create the classification matrix from label f
-% Usage: B = gsp_classification_matrix(f);
-%
-% Input parameters:
-% f : Labels
-% Output parameters:
-% B : Classification matrix
-%
-% See also: gsp_matrix2label gsp_classification_tik gsp_classification_tv
-%
-% Url: http://lts2research.epfl.ch/gsp/doc/graph_ml/gsp_classification_matrix.php
-
-% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
-%
-% This program is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
-%
-% This program is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program. If not, see .
-
-% If you use this toolbox please kindly cite
-% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
-% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
-% ArXiv e-prints, Aug. 2014.
-% http://arxiv.org/abs/1408.5781
-
-% Author: Nathanael Perraudin
-% Date : 24 July 2015
-
-minf = min(f);
-maxf = max(f);
-d = minf:maxf;
-B = zeros(numel(f),numel(d));
-for ii = 1:numel(d)
- B(:,ii) = double(f==d(ii));
-end
-
-B = double(B);
-
-end
diff --git a/graph_ml/gsp_classification_tik.m b/graph_ml/gsp_classification_tik.m
deleted file mode 100644
index 69acf3e..0000000
--- a/graph_ml/gsp_classification_tik.m
+++ /dev/null
@@ -1,88 +0,0 @@
-function sol = gsp_classification_tik(G ,M, y , tau, param )
-%GSP_CLASSIFICATION_TIK Classification using graph and Tikonow
-% Usage: sol = gsp_classification_tik(G ,M, y );
-% sol = gsp_classification_tik(G ,M, y , tau );
-% sol = gsp_classification_tik(G ,M, y , tau, param );
-%
-% Input parameters:
-% G : Graph
-% M : Mask (to determine with label is known)
-% y : label (total size of the problem)
-% tau : regularization parameter (weight for tv) (default 0)
-% param : optional structure of parameters
-%
-% Output parameters:
-% sol : Solution of the problem
-%
-% This function solve the following problem
-%
-% argmin_x || M x - B ||_F^2 + tau || nabla x ||_F^2
-%
-% where B is a matrix create using the function
-% gsp_classification_matrix.m
-%
-% If tau is set to zero, then the following problem is solved
-%
-% argmin_x || nabla_G x ||_F^2 s. t. M x - B = 0
-%
-% Warning the class needs to be integers! (Consecutive for optimality)
-%
-% This function uses the UNLocBoX.
-%
-% See also: gsp_regression_tik gsp_classification_tv
-%
-% Url: http://lts2research.epfl.ch/gsp/doc/graph_ml/gsp_classification_tik.php
-
-% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
-%
-% This program is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
-%
-% This program is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program. If not, see .
-
-% If you use this toolbox please kindly cite
-% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
-% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
-% ArXiv e-prints, Aug. 2014.
-% http://arxiv.org/abs/1408.5781
-
-% Author: Nathanael Perraudin
-% Date : 24 July 2015
-
-
-%% Optional parameters
-
-if nargin<5
- param = struct;
-end
-
-if nargin<4
- tau = 0;
-end
-
-
-if ~isfield(param,'verbose'), param.verbose = 1; end
-
-%%
-
-B = gsp_classification_matrix(y);
-
-
-
-soltik = gsp_regression_tik(G, M, B , tau, param );
-
-minf = min(y);
-sol = gsp_matrix2label(soltik,minf);
-
-
-
-end
diff --git a/graph_ml/gsp_classification_tv.m b/graph_ml/gsp_classification_tv.m
deleted file mode 100644
index 56b5975..0000000
--- a/graph_ml/gsp_classification_tv.m
+++ /dev/null
@@ -1,86 +0,0 @@
-function sol = gsp_classification_tv(G ,M, y , tau, param )
-%GSP_CLASSIFICATION_TV Classification using graph and Tikonow
-% Usage: sol = gsp_classification_tv(G ,M, y );
-% sol = gsp_classification_tv(G ,M, y , tau );
-% sol = gsp_classification_tv(G ,M, y , tau, param );
-%
-% Input parameters:
-% G : Graph
-% M : Mask (to determine with label is known)
-% y : label (total size of the problem)
-% tau : regularization parameter (weight for tv) (default 0)
-% param : optional structure of parameters
-%
-%
-% Output parameters:
-% sol : Solution of the problem
-%
-% This function solve the following problem
-%
-% argmin_x || M x - B ||_2^2 + tau || x ||_{G TV}
-%
-% where B is a matrix create using the function GSP_CLASSIFICATION_MATRIX
-%
-% If tau is set to zero, then the following problem is solved:
-%
-% argmin_x || x ||_{G TV} s. t. M x - B = 0
-%
-% Warning the class needs to be integers! (Consecutive for optimality)
-%
-% This function uses the UNLocBoX.
-%
-% See also: gsp_regression_tv gsp_classification_tik
-%
-% Url: http://lts2research.epfl.ch/gsp/doc/graph_ml/gsp_classification_tv.php
-
-% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
-%
-% This program is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
-%
-% This program is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program. If not, see .
-
-% If you use this toolbox please kindly cite
-% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
-% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
-% ArXiv e-prints, Aug. 2014.
-% http://arxiv.org/abs/1408.5781
-
-% Author: Nathanael Perraudin
-% Date : 24 July 2015
-
-
-
-%% Optional parameters
-
-if nargin<5
- param = struct;
-end
-
-if nargin<4
- tau = 0;
-end
-
-
-if ~isfield(param,'verbose'), param.verbose = 1; end
-
-%%
-B = gsp_classification_matrix(y);
-
-soltv = gsp_regression_tv(G, M, B , tau, param );
-
-minf = min(y);
-sol = gsp_matrix2label(soltv,minf);
-
-
-
-end
diff --git a/graph_ml/gsp_classification_tv_new.m b/graph_ml/gsp_classification_tv_new.m
deleted file mode 100644
index c3dc9a9..0000000
--- a/graph_ml/gsp_classification_tv_new.m
+++ /dev/null
@@ -1,151 +0,0 @@
-function sol = gsp_classification_tv_new(G ,M, y , tau, param )
-%GSP_CLASSIFICATION_TV Classification using graph and Tikonow
-% Usage: sol = gsp_classification_tv(G ,M, y );
-% sol = gsp_classification_tv(G ,M, y , tau );
-% sol = gsp_classification_tv(G ,M, y , tau, param );
-%
-% Input parameters:
-% G : Graph
-% M : Mask (to determine with label is known)
-% y : label (total size of the problem)
-% tau : regularization parameter (weight for tv) (default 0)
-% param : optional structure of parameters
-%
-%
-% Output parameters:
-% sol : Solution of the problem
-%
-% This function solve the following problem
-%
-% argmin_x || M x - B ||_2^2 + tau || x ||_{G TV}
-%
-% where B is a matrix create using the function GSP_CLASSIFICATION_MATRIX
-%
-% If tau is set to zero, then the following problem is solved:
-%
-% argmin_x || x ||_{G TV} s. t. M x - B = 0
-%
-% Warning the class needs to be integers! (Consecutive for optimality)
-%
-% This function uses the UNLocBoX.
-%
-% See also: gsp_regression_tv gsp_classification_tik
-%
-% Url: http://lts2research.epfl.ch/gsp/doc/graph_ml/gsp_classification_tv_new.php
-
-% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
-%
-% This program is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
-%
-% This program is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program. If not, see .
-
-% If you use this toolbox please kindly cite
-% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
-% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
-% ArXiv e-prints, Aug. 2014.
-% http://arxiv.org/abs/1408.5781
-
-% Author: Nathanael Perraudin
-% Date : 24 July 2015
-
-
-
-%% Optional parameters
-
-if nargin<5
- param = struct;
-end
-
-if nargin<4
- tau = 0;
-end
-
-
-if ~isfield(param,'verbose'), param.verbose = 1; end
-
-%%
-B = gsp_classification_matrix(y);
-
-
-%% prepare the graph
-
-G = gsp_estimate_lmax(G);
-G = gsp_adj2vec(G);
-
-
-
-
-
-paramsolver = param;
-
-
-if tau > 0
-% Mop =@(x) bsxfun(@times,M,x);
-%
-% fg.grad = @(x) 2*Mop(Mop(x)-y);
-% fg.eval = @(x) norm(Mop(x)-y)^2;
-% fg.beta = 2;
-%
-% % setting the function ftv
-% % paramtv.verbose = param.verbose-1;
-% % ftv.prox = @(x,T) gsp_prox_tv(x,tau*T,G,paramtv);
-% % ftv.eval = @(x) tau *sum(gsp_norm_tv(G,x));
-%
-% paramtv.verbose = param.verbose-1;
-% ftv.prox = @(x,T) prox_l1(x,tau*T,paramtv);
-% ftv.eval = @(x) tau *sum(gsp_norm_tv(G,x));
-% ftv.L = @(x ) G.Diff * x;
-% ftv.Lt = @(x ) G.Diff' * x;
-% ftv.norm_L = G.lmax;
-% %% solve the problem
-% % setting the timestep
-%
-%
-% sol = solvep(y,{ftv,fg},paramsolver);
-
-error('not done')
-
-else
-
-
- A = G.Diff(:,~logical(M));
- b = - G.Diff(:,logical(M)) * B(logical(M),:);
-
- paramtv.verbose = param.verbose-1;
- paramtv.y = b;
- ftv.prox = @(x,T) prox_l1(x,T,paramtv);
- ftv.eval = @(x) sum(sum(abs(A*x-b)));
- ftv.L = @(x ) A * x;
- ftv.Lt = @(x ) A' * x;
- ftv.norm_L = G.lmax;
-
- paramsimplex.dim = 2;
- paramsimplex.verbose = param.verbose - 1;
- fsimplex.prox = @(x,T) proj_simplex(x,T, paramsimplex);
- fsimplex.eval = @(x) eps;
-
- %% solve the problem
- solt = solvep(B(~logical(M),:),{ftv, fsimplex},paramsolver);
-
- soltv = B;
- soltv(~logical(M),:) = solt;
-
-end
-
-
-minf = min(y);
-sol = gsp_matrix2label(soltv,minf);
-
-
-
-end
diff --git a/graph_ml/gsp_frkhs.m b/graph_ml/gsp_frkhs.m
deleted file mode 100644
index 9ffffe4..0000000
--- a/graph_ml/gsp_frkhs.m
+++ /dev/null
@@ -1,82 +0,0 @@
-function [ y ] = gsp_frkhs( x,alpha,xi,k,method )
-%GSP_FRKHS This function evalute the function f
-% Usage: y = gsp_frkhs( x,alpha,xi,k )
-%
-% Input parameters
-% x : column vector of point to evaluate the function
-% alpha : coefficient of the function (vector column!)
-% xi : measurements
-% k : kernel
-% method : method for the function rkhs_evalute (default mixed)
-% Output parameters
-% y : column vector of solution
-%
-% This function evaluates the function f in this form
-%
-% y = sum_l alpha_l k(x_l,x)
-%
-% This is a dummy function that need improvements
-%
-% Url: http://lts2research.epfl.ch/gsp/doc/graph_ml/gsp_frkhs.php
-
-% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
-%
-% This program is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
-%
-% This program is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program. If not, see .
-
-% If you use this toolbox please kindly cite
-% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
-% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
-% ArXiv e-prints, Aug. 2014.
-% http://arxiv.org/abs/1408.5781
-
-% Author: Nathanael Perraudin
-% Date : 10 june 2014
-
-if nargin < 5
- method = 'mixed';
-end
-
-M = size(x,2);
-
-y = zeros(M,size(alpha,2));
-N = length(alpha);
-
-if size(alpha,2)>1
- for ii = 1: size(alpha,2)
- y(:,ii) = gsp_frkhs( x,alpha(:,ii),xi,k);
- end
- return
-end
-
-if iscell(k)
- Nc = length(k);
- for ii = 1:Nc
- y = y + gsp_frkhs( x,alpha((1:(N/Nc))+(ii-1)*N/Nc),xi,k{ii} );
- end
- return
-end
-
-
-%
-% for ii = 1:N
-% y = y + alpha(ii) * k(repmat(xi(ii,:),M,1),x);
-% end
-
-Kx = gsp_rkhs_evaluate(k,xi,x,method);
-y = Kx'*alpha;
-
-end
-
-
diff --git a/graph_ml/gsp_frpcaog_1g.m b/graph_ml/gsp_frpcaog_1g.m
deleted file mode 100644
index e16bd64..0000000
--- a/graph_ml/gsp_frpcaog_1g.m
+++ /dev/null
@@ -1,116 +0,0 @@
-function [Lr, Sp, G, U, S, V] = gsp_frpcaog_1g(X, gamma, G, param)
-%GSP_FRPCAOG_1G Fast robust PCA on graphs (1 graphs)
-% Usage: [Lr] = gsp_frpcaog_1g(X, gamma, G);
-% [Lr] = gsp_frpcaog_1g(X, gamma, G, param);
-% [Lr, Sp] = gsp_frpcaog_1g( ... );
-% [Lr, Sp, G] = gsp_frpcaog_1g( ... );
-% [Lr, Sp, G, U, S, V] = gsp_frpcaog_1g( ... );
-%
-% Input parameters:
-% X : Input data (matrix of double)
-% gamma : Regularization parameter 1 (double)
-% G : Graph (between the line of the data )
-% param : Optional optimization parameters
-%
-% Output Parameters:
-% Lr : Low-rank part of the data
-% Sp : Sparse part of the data
-% G : Graph (between the line of the data )
-% U : Part of the SVD of Lr
-% S : Part of the SVD of Lr
-% V : Part of the SVD of Lr
-%
-% This function compute a low rank approximation of the data stored in
-% Lr by solving an optimization problem:
-%
-% argmin_Lr || Lr - X ||_1 + gamma tr( X^T L X)
-%
-% The sparse part is given by S = X - L_r .
-%
-% If 0 is given for G, the corresponding graph will
-% be computed internally. The graph construction can be tuned using the
-% optional parameter: param.paramnn.
-%
-% Other optional parameters are used in optimization. For details about
-% those, please see the help of the function SOLVEP .
-%
-% If the number of output argument is greater than 2. The function, will
-% additionally compute a very economical SVD such that Lr = U S V^T.
-%
-% This function uses the UNLocBoX to be working.
-%
-% References:
-% N. Shahid, N. Perraudin, V. Kalofolias, and P. Vandergheynst. Fast
-% robust pca on graphs. arXiv preprint arXiv:1507.08173, 2015.
-%
-%
-%
-% See also: gsp_frpcaog_2g
-%
-% Url: http://lts2research.epfl.ch/gsp/doc/graph_ml/gsp_frpcaog_1g.php
-
-% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
-%
-% This program is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
-%
-% This program is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program. If not, see .
-
-% If you use this toolbox please kindly cite
-% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
-% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
-% ArXiv e-prints, Aug. 2014.
-% http://arxiv.org/abs/1408.5781
-
-% Author: Nathanael Perraudin
-% Date : 19th October 2015
-
-%% Optional parameters
-
-if nargin<4
- param = struct;
-end
-
-if ~isfield(param, 'verbose'), param.verbose = 1; end
-if ~isfield(param, 'paramnn'), param.paramnn = struct; end
-
-if ~isstruct(G)
- G = gsp_nn_graph(X, param.paramnn);
-end
-
-if ~isfield(G,'lmax')
- G = gsp_estimate_lmax(G);
-end
-
-%% Optimization
-paraml1.verbose = param.verbose -1;
-paraml1.y = X;
-f1.prox = @(x,T) prox_l1(x,T,paraml1);
-f1.eval = @(x) norm(x(:),1);
-
-f2.grad = @(x) gamma*2*G.L*x;
-f2.eval = @(x) gamma*sum(gsp_norm_tik(G,x));
-f2.beta = 2*gamma*G.lmax;
-
-Lr = solvep(X,{f1,f2},param);
-Sp =X-Lr;
-
-%% Optional output parameters
-if nargout>3
- [U, S , V] = svdecon(Lr);
-end
-
-
-end
-
-
-
diff --git a/graph_ml/gsp_frpcaog_2g.m b/graph_ml/gsp_frpcaog_2g.m
deleted file mode 100644
index 74ca7e3..0000000
--- a/graph_ml/gsp_frpcaog_2g.m
+++ /dev/null
@@ -1,133 +0,0 @@
-function [Lr, Sp, G1, G2, U, S, V] = gsp_frpcaog_2g(X, gamma1, gamma2, G1, G2, param)
-%GSP_FRPCAOG_2G Fast robust PCA on graphs (2 graphs)
-% Usage: [Lr] = gsp_frpcaog_2g(X, gamma1, gamma2, G1, G2);
-% [Lr] = gsp_frpcaog_2g(X, gamma1, gamma2, G1, G2, param);
-% [Lr, Sp] = gsp_frpcaog_2g( ... );
-% [Lr, Sp, G1, G2] = gsp_frpcaog_2g( ... );
-% [Lr, Sp, G1, G2, U, S, V] = gsp_frpcaog_2g( ... );
-%
-% Input parameters:
-% X : Input data (matrix of double)
-% gamma1 : Regularization parameter 1 (double)
-% gamma2 : Regularization parameter 2 (double)
-% G1 : Graph 1 (between the line of the data )
-% G2 : Graph 2 (between the column of the data )
-% param : Optional parameters
-%
-% Output Parameters:
-% Lr : Low-rank part of the data
-% Sp : Sparse part of the data
-% G1 : Graph 1 (between the line of the data )
-% G2 : Graph 2 (between the column of the data )
-% U : Part of the SVD of Lr
-% S : Part of the SVD of Lr
-% V : Part of the SVD of Lr
-%
-% This function compute a low rank approximation of the data stored in
-% Lr by solving an optimization problem:
-%
-% argmin_Lr || Lr - X ||_1 + gamma1 tr( X^T L1 X) + gamma2 tr( X L2 X^T)
-%
-% The sparse part is given by S = X - L_r .
-%
-% If 0 is given for G1 and/or G2, the corresponding graph(s) will
-% be computed internally. The graph construction can be tuned using the
-% optional parameter: param.paramnn.
-%
-% Other optional parameters are used in optimization. For details about
-% those, please see the help of the function SOLVEP .
-%
-% If the number of output argument is greater than 2. The function, will
-% additionally compute a very economical SVD such that Lr = U S V^T.
-%
-% This function uses the UNLocBoX to be working.
-%
-% References:
-% N. Shahid, N. Perraudin, V. Kalofolias, and P. Vandergheynst. Fast
-% robust pca on graphs. arXiv preprint arXiv:1507.08173, 2015.
-%
-%
-%
-% See also: gsp_frpcaog_1g
-%
-% Url: http://lts2research.epfl.ch/gsp/doc/graph_ml/gsp_frpcaog_2g.php
-
-% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
-%
-% This program is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
-%
-% This program is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program. If not, see .
-
-% If you use this toolbox please kindly cite
-% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
-% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
-% ArXiv e-prints, Aug. 2014.
-% http://arxiv.org/abs/1408.5781
-
-% Author: Nathanael Perraudin
-% Date : 19th October 2015
-
-%% Optional parameters
-
-if nargin<6
- param = struct;
-end
-
-if ~isfield(param, 'verbose'), param.verbose = 1; end
-if ~isfield(param, 'paramnn'), param.paramnn = struct; end
-
-if ~isstruct(G1)
- G1 = gsp_nn_graph(transpose(X), param.paramnn);
-end
-
-if ~isstruct(G2)
- G2 = gsp_nn_graph(X, param.paramnn);
-end
-
-if ~isfield(G1,'lmax')
- G1 = gsp_estimate_lmax(G1);
-end
-
-if ~isfield(G2,'lmax')
- G2 = gsp_estimate_lmax(G2);
-end
-
-
-%% Algorithm
-
-paraml1.verbose = param.verbose -1;
-paraml1.y = X;
-f1.prox = @(x,T) prox_l1(x,T,paraml1);
-f1.eval = @(x) norm(x(:),1);
-
-f2.grad = @(x) gamma1*2*G1.L*x;
-f2.eval = @(x) gamma1*sum(gsp_norm_tik(G1,x));
-f2.beta = 2*gamma1*G1.lmax;
-
-f3.grad = @(x) gamma2*(2*x*G2.L);
-f3.eval = @(x) gamma2*sum(gsp_norm_tik(G2,x'));
-f3.beta = 2*gamma2*G2.lmax;
-
-Lr = solvep(X,{f1,f2,f3},param);
-
-Sp = X-Lr;
-
-%% Optional arguments
-if nargout>4
- [U, S , V] = svdecon(Lr);
-end
-
-end
-
-
-
diff --git a/graph_ml/gsp_gpcatv_2g.m b/graph_ml/gsp_gpcatv_2g.m
deleted file mode 100644
index ce3d8d5..0000000
--- a/graph_ml/gsp_gpcatv_2g.m
+++ /dev/null
@@ -1,149 +0,0 @@
-function [Lr, Sp, G1, G2, U, S, V] = gsp_gpcatv_2g(X, gamma1, gamma2, G1, G2, param)
-%GSP_GPCATV_2G Graph PCA using TV (2 graphs)
-% Usage: [Lr] = gsp_gpcatv_2g(X, gamma1, gamma2, G1, G2);
-% [Lr] = gsp_gpcatv_2g(X, gamma1, gamma2, G1, G2, param);
-% [Lr, Sp] = gsp_gpcatv_2g( ... );
-% [Lr, Sp, G1, G2] = gsp_gpcatv_2g( ... );
-% [Lr, Sp, G1, G2, U, S, V] = gsp_gpcatv_2g( ... );
-%
-% Input parameters:
-% X : Input data (matrix of double)
-% gamma1 : Regularization parameter 1 (double)
-% gamma2 : Regularization parameter 2 (double)
-% G1 : Graph 1 (between the line of the data )
-% G2 : Graph 2 (between the column of the data )
-% param : Optional parameters
-%
-% Output Parameters:
-% Lr : Low-rank part of the data
-% Sp : Sparse part of the data
-% G1 : Graph 1 (between the line of the data )
-% G2 : Graph 2 (between the column of the data )
-% U : Part of the SVD of Lr
-% S : Part of the SVD of Lr
-% V : Part of the SVD of Lr
-%
-% This function compute a low rank approximation of the data stored in
-% Lr by solving an optimization problem:
-%
-% argmin_Lr || Lr - X ||_1 + gamma1 || X ||_TVG + gamma2 tr( X L2 X^T)
-%
-% The sparse part is given by S = X - L_r .
-%
-% If 0 is given for G1 and/or G2, the corresponding graph(s) will
-% be computed internally. The graph construction can be tuned using the
-% optional parameter: param.paramnn.
-%
-% Other optional parameters are used in optimization. For details about
-% those, please see the help of the function SOLVEP .
-%
-% If the number of output argument is greater than 2. The function, will
-% additionally compute a very economical SVD such that Lr = U S V^T.
-%
-% This function uses the UNLocBoX to be working.
-%
-% References:
-% N. Shahid, N. Perraudin, V. Kalofolias, and P. Vandergheynst. Fast
-% robust pca on graphs. arXiv preprint arXiv:1507.08173, 2015.
-%
-%
-%
-% See also: gsp_frpcaog_1g
-%
-% Url: http://lts2research.epfl.ch/gsp/doc/graph_ml/gsp_gpcatv_2g.php
-
-% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
-%
-% This program is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
-%
-% This program is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program. If not, see .
-
-% If you use this toolbox please kindly cite
-% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
-% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
-% ArXiv e-prints, Aug. 2014.
-% http://arxiv.org/abs/1408.5781
-
-% Author: Nathanael Perraudin
-% Date : 19th October 2015
-
-%% Optional parameters
-
-if nargin<6
- param = struct;
-end
-
-if ~isfield(param, 'verbose'), param.verbose = 1; end
-if ~isfield(param, 'paramnn'), param.paramnn = struct; end
-
-if ~isstruct(G1)
- G1 = gsp_nn_graph(transpose(X), param.paramnn);
-end
-
-if ~isstruct(G2)
- G2 = gsp_nn_graph(X, param.paramnn);
-end
-
-if ~isfield(G1,'lmax')
- G1 = gsp_estimate_lmax(G1);
-end
-
-if ~isfield(G2,'lmax')
- G2 = gsp_estimate_lmax(G2);
-end
-
-
-if ~isfield(G1,'Diff')
- G1 = gsp_adj2vec(G1);
-end
-if ~isfield(G2,'Diff')
- G2 = gsp_adj2vec(G2);
-end
-
-%%
-
-
-paraml1.verbose = param.verbose -1;
-paraml1.y = X;
-f1.prox = @(x,T) prox_l1(x,T,paraml1);
-f1.eval = @(x) norm(x(:),1);
-
-
-D1 = G1.Diff;
-param_tvl1.verbose = param.verbose - 1;
-f2.prox = @(x,T) prox_l1(x,T*gamma1,param_tvl1);
-f2.eval = @(x) gamma1*sum(sum(abs(D*x)));
-f2.L= @(x) D1*x;
-f2.Lt = @(x) D1'*x;
-f2.norm_L = 2*G1.lmax;
-
-f3.grad = @(x) gamma2*(2*x*G2.L);
-f3.eval = @(x) gamma2*sum(gsp_norm_tik(G2,x'));
-f3.beta = 2*gamma2*G2.lmax;
-
-paramsolver = param;
-paramsolver.algo = 'fb_based_primal_dual';
-
-Lr = solvep(X,{f1,f2,f3},paramsolver);
-
-Sp = X-Lr;
-
-%% Optional arguments
-if nargout>4
- [U, S , V] = svdecon(Lr);
-end
-
-end
-
-
-
diff --git a/graph_ml/gsp_knn_classify_graph.m b/graph_ml/gsp_knn_classify_graph.m
deleted file mode 100644
index bf20939..0000000
--- a/graph_ml/gsp_knn_classify_graph.m
+++ /dev/null
@@ -1,164 +0,0 @@
-function [ G ] = gsp_knn_classify_graph( Xl, Xu, param )
-%GSP_KNN_CLASSIFY_GRAPH Create a weighted knn classifier graph
-% Usage : G = gsp_knn_classify_graph( Xl, Xu );
-% G = gsp_knn_classify_graph( Xl, Xu, param );
-%
-% Input parameters:
-% Xl : Labeled points
-% Xu : Unlabeled points
-% param : Structure of optional parameters
-%
-% Output parameters:
-% G : Resulting graph
-%
-% This function create a special graph from labeled and unlabeled data.
-% Solving a tikonow regression problem on this graph is equivalent to
-% perform a knn regression algorithm. This function is done for
-% comparison between methods.
-%
-% Additional parameters
-% ---------------------
-%
-% param.use_flann : [0, 1] use the FLANN library
-% param.k : int number of neighbors for knn
-% param.use_l1 : [0, 1] use the l1 distance
-% param.weighted : [0, 1] use a weighted graph
-% param.sigma : double
-%
-% See also: gsp_nn_graph gsp_knn_classify_weighted_graph
-%
-%
-% Url: http://lts2research.epfl.ch/gsp/doc/graph_ml/gsp_knn_classify_graph.php
-
-% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
-%
-% This program is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
-%
-% This program is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program. If not, see .
-
-% If you use this toolbox please kindly cite
-% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
-% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
-% ArXiv e-prints, Aug. 2014.
-% http://arxiv.org/abs/1408.5781
-
-% Author: Nathanael Perraudin
-% Date: 24 June 2015
-% Testing: test_graph_ml
-
- if nargin < 3
- % Define parameters
- param = {};
- end
-
- %Parameters
- if ~isfield(param, 'use_flann'), param.use_flann = 0; end
- if ~isfield(param, 'k'), param.k = 10; end
- if ~isfield(param, 'use_l1'), param.use_l1 = 0; end
- if ~isfield(param, 'weighted'), param.weighted = 0; end
-
- % test if the binaries of flann are working
- if param.use_flann
- try
- paramsflann.algorithm = 'kdtree';
- paramsflann.checks = 32;
- paramsflann.trees = 1;
- tmp = rand(100,10);
- [NN] = flann_search(tmp', tmp', 3, paramsflann); %#ok
- catch
- warning('Flann not compiled, going for the slow algorithm!')
- param.use_flann = 0;
- end
- end
-
-
- k = param.k;
-
- N = size(Xu,1);
- M = size(Xl,1);
-
- spi = zeros(N*k,1);
- spj = zeros(N*k,1);
- spv = zeros(N*k,1);
-
- %Find kNN for each point in X (Using a kdtree)
- if param.use_flann
- if param.use_l1
- error('Not implemented yet')
- end
- paramsflann.algorithm = 'kdtree';
- %TODO : optimize parameters in function of the number of
- %points
- paramsflann.checks = 32;
- paramsflann.trees = 1;
- % Use flann library
- [NN, DD] = flann_search(Xl', Xu', k, paramsflann);
- NN = transpose(NN);
- DD = transpose(DD);
- else
- %Built in matlab knn search
- if param.use_l1
- kdt = KDTreeSearcher(Xl, 'distance', 'cityblock');
- [NN, DD] = knnsearch(kdt, Xu, 'k', k , 'Distance','cityblock');
- else
- kdt = KDTreeSearcher(Xl, 'distance', 'euclidean');
- [NN, DD] = knnsearch(kdt, Xu, 'k', k );
- end
-
- end
-
-
- % Fill the 3-col values with [i, j, exp(-d(i,j)^2 / sigma)]
-
- for ii = 1:N
- spi((ii-1)*k+1:ii*k) = repmat(ii, k, 1);
- spj((ii-1)*k+1:ii*k) = NN(ii, :);
- if param.weighted
- if param.use_l1
- if ~isfield(param, 'sigma'), param.sigma = mean(DD(:)); end
- spv((ii-1)*k+1:ii*k) = exp(-DD(ii,:)/param.sigma);
- else
- if ~isfield(param, 'sigma'), param.sigma = mean(DD(:))^2; end
- spv((ii-1)*k+1:ii*k) = exp(-DD(ii,:).^2/param.sigma);
- end
- else
- spv((ii-1)*k+1:ii*k) = 1;
- end
-
- end
-
-
- %Actually create the sparse matrix from the 3-col values
-
-
- We = sparse(spj, spi, spv, M, N);
-
- W = [sparse(M,M) , We ; ...
- We' , sparse(N,N) ];
-
- %Fill in the graph structure
- G.W = W;
- G.coords = [Xl; Xu];
- G.We = We';
- G.de = sum(We)';
- if param.use_l1
- G.type = 'KNN classify l1';
- else
- G.type = 'KNN classify l2';
- end
- G = gsp_graph_default_parameters(G);
-
-
-end
-
-
diff --git a/graph_ml/gsp_matrix2label.m b/graph_ml/gsp_matrix2label.m
deleted file mode 100644
index 48c0b73..0000000
--- a/graph_ml/gsp_matrix2label.m
+++ /dev/null
@@ -1,50 +0,0 @@
-function [ f ] = gsp_matrix2label( B, minf )
-%GSP_MATRIY2LABEL Reconstruct labels from matrix
-% Usage: f = gsp_matrix2label( B );
-% f = gsp_matrix2label( B, minf );
-%
-% Input parameters:
-% B : Classification matrix
-% minf: smallest integer (default 0)
-% Output parameters:
-% f : Labels
-%
-% See also: gsp_classification_matrix gsp_classification_tik gsp_classification_tv
-%
-% Url: http://lts2research.epfl.ch/gsp/doc/graph_ml/gsp_matrix2label.php
-
-% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
-%
-% This program is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
-%
-% This program is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program. If not, see .
-
-% If you use this toolbox please kindly cite
-% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
-% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
-% ArXiv e-prints, Aug. 2014.
-% http://arxiv.org/abs/1408.5781
-
-% Author: Nathanael Perraudin
-% Date : 24 July 2015
-
-if nargin<2
- minf = 0;
-end
-
-[~,f] = max(B,[],2);
-f = f-1+minf;
-
-end
-
-
diff --git a/graph_ml/gsp_ml_rls.m b/graph_ml/gsp_ml_rls.m
deleted file mode 100644
index 551b9f1..0000000
--- a/graph_ml/gsp_ml_rls.m
+++ /dev/null
@@ -1,145 +0,0 @@
-function [sol, infos] = gsp_ml_rls(xl, y, k, tau, A, At, param)
-%GSP_ML_RLS Manifold Learning regularized least square
-% Usage: sol = gsp_ml_rls(xl, y, k, tau);
-% sol = gsp_ml_rls(xl, y, k, tau, A, At);
-% sol = gsp_ml_rls(xl, y, k, tau, A, At, param);
-% [sol, infos] = gsp_ml_rls(...)
-%
-% Input parameters:
-% xl : labeled points
-% y : labels
-% k : kernel
-% tau : regularization parameters
-% A : Operator
-% At : Adoint operator
-% param : Optional parameters
-% Output parameters:
-% sol : solution of the problem (kernel coefficients)
-% infos : convergence info
-%
-% param is a structure of optional argument given to the solver
-% gradient_descent. Please see the function gradient descent for more
-% information.
-%
-% In param, you also have to set an upperbound for the operator A as
-% param.nu!
-%
-% This function solves the following problem:
-%
-% argmin_alpha || A (K alpha) - y ||_2^2 + tau *alpha^T K alpha
-%
-% If tau is set to zero, then the following problem is solved
-%
-% argmin_alpha alpha^T K alpha s. t. A (K alpha) = y
-%
-
-% Author: Nathanael Perraudin
-% Date : 8 decembre 2014
-
-
-if nargin<5
-%
-% Url: http://lts2research.epfl.ch/gsp/doc/graph_ml/gsp_ml_rls.php
-
-% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
-%
-% This program is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
-%
-% This program is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program. If not, see .
-
-% If you use this toolbox please kindly cite
-% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
-% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
-% ArXiv e-prints, Aug. 2014.
-% http://arxiv.org/abs/1408.5781
- A = @(x) x;
-end
-
-
-if nargin<6
- At = A;
-end
-
-if nargin<7
- param = struct;
-end
-
-
-if ~isfield(param, 'tol'), param.tol = 1e-6; end
-if ~isfield(param, 'nu'), param.nu = 1; end
-if ~isfield(param, 'verbose'), param.verbose = 1; end
-
-
-
-%N = size(xl,2);
-
-% Evaluate the kernel on the data points
-K = gsp_rkhs_evaluate(k,xl);
-nu = norm(K);
-
-[N,M] = size(y);
-Nk = length(k);
-alpha_in = zeros(N*Nk,M);
-
-if tau >0
-
- fp.eval = @(x) tau * sum(norm_rkhs( K,x ));
- fp.grad = @(x) tau * grad_rkhs( K,x);
- fp.beta = 2*nu*tau;
-
- ffid.eval = @(x) norm(A(K*x)-y,'fro')^2;
- ffid.grad = @(x) 2*K'*At(A(K*x)-y);
- ffid.beta = 2*nu^2*param.nu^2;
-
-
-
-
-% paramfid.A = @(x) A(K*x);
-% paramfid.At = @(x) K'*At(x);
-% paramfid.nu = nu^2;
-% paramfid.tight = 0;
-% paramfid.y = y;
-% paramfid.verbose = param.verbose -1;
-% ffid.eval = @(x) norm(A(K*x)-y,'fro')^2;
-% ffid.prox = @(x,T) prox_l2(x,T,paramfid);
-
- [sol,infos] = solvep(alpha_in, {fp,ffid}, param);
-
-% param.gamma = 0.5/(tau*nu);
-% [sol,infos] = forward_backward(alpha_in, ffid, fp, param);
-else
-
- fp.eval = @(x) sum(norm_rkhs( K,x ));
- fp.grad = @(x) grad_rkhs( K,x);
- fp.beta = 2*nu;
-
-
- paramproj.A = @(x) A(K*x);
- paramproj.At = @(x) K'*At(x);
- paramproj.nu = nu^2*param.nu^2;
- paramproj.tight = 0;
- paramproj.verbose = param.verbose-1;
- paramproj.y = y;
- paramproj.maxit = 50;
- ffid.eval = @(x) eps;
- ffid.prox = @(x,T) proj_b2(x,T,paramproj);
-
-
- [sol,infos] = forward_backward(alpha_in, ffid, fp, param);
-
-end
-
-
-
-
-end
diff --git a/graph_ml/gsp_ml_rls_tik.m b/graph_ml/gsp_ml_rls_tik.m
deleted file mode 100644
index 4a5fc76..0000000
--- a/graph_ml/gsp_ml_rls_tik.m
+++ /dev/null
@@ -1,145 +0,0 @@
-function [sol, infos] = gsp_ml_rls_tik(G, xl, y, k, tau,lambda, A, At, param)
-%GSP_ML_RLS_TIK Manifold Learning regularized least square with laplacian regularization
-% Usage: sol = gsp_ml_rls_tik(G, xl, y, k, tau, lambda);
-% sol = gsp_ml_rls_tik(G, xl, y, k, tau, lambda, A, At);
-% sol = gsp_ml_rls_tik(G, xl, y, k, tau, lambda, A, At, param);
-% [sol, infos] = gsp_ml_rls_tik(...)
-%
-% Input parameters:
-% G : Gsp graph
-% xl : labeled points
-% y : labels
-% k : kernel
-% tau : regularization parameters
-% lambda : regularization parameters
-% A : Operator
-% At : Adoint operator
-% param : Optional parameters
-% Output parameters:
-% sol : solution of the problem (kernel coefficients)
-% infos : convergence info
-%
-% param is a structure of optional argument given to the solver
-% gradient_descent. Please see the function gradient descent for more
-% information.
-%
-% In param, you also have to set an upperbound for the operator A as
-% param.nu!
-%
-% This function solves the following problem:
-%
-% argmin_alpha || A (K alpha) - y ||_2^2
-% + tau *alpha^T K alpha
-% + lambda alpha^T K^T L K alpha
-%
-% If tau is set to zero, then the following problem is solved
-%
-% argmin_alpha alpha^T K alpha
-% + lambda alpha^T K^T L K alpha
-% s. t. A (K alpha) = y
-%
-
-% Author: Nathanael Perraudin
-% Date : 8 decembre 2014
-
-
-if nargin<7
-%
-% Url: http://lts2research.epfl.ch/gsp/doc/graph_ml/gsp_ml_rls_tik.php
-
-% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
-%
-% This program is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
-%
-% This program is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program. If not, see .
-
-% If you use this toolbox please kindly cite
-% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
-% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
-% ArXiv e-prints, Aug. 2014.
-% http://arxiv.org/abs/1408.5781
- A = @(x) x;
-end
-
-
-if nargin<8
- At = A;
-end
-
-if nargin<9
- param = struct;
-end
-
-
-if ~isfield(param, 'tol'), param.tol = 1e-6; end
-if ~isfield(param, 'nu'), param.nu = 1; end
-if ~isfield(param, 'verbose'), param.verbose = 1; end
-
-
-
-N = size(xl,2);
-
-% Evaluate the kernel on the data points
-K = gsp_rkhs_evaluate(k,xl);
-nu = norm(K);
-
-alpha_in = zeros(N,size(y,2));
-
-if ~isfield(G,'lmax');
- G = gsp_estimate_lmax(G);
-end
-
-flap.eval = @(x) lambda*sum(gsp_norm_tik(G,K*x));
-flap.grad = @(x) 2*lambda*full(G.L*(K*x));
-flap.beta = 2*lambda*nu*G.lmax;
-
-if tau >0
-
- fp.eval = @(x) tau *sum(gsp_norm_tik(G,x));
- fp.grad = @(x) 2*tau*K*x;
- fp.beta = 2* tau*nu+nu^2;
-
- ffid.eval = @(x) norm(A(K*x)-y,'fro')^2;
- ffid.grad = @(x) 2*K'*At(A(K*x)-y);
- ffid.beta = param.nu^2;
-
-
- [sol,infos] = solvep(alpha_in, {flap,ffid,fp}, param);
-else
-
- fp.eval = @(x) x'*K*x;
- fp.grad = @(x) 2*K*x;
-
- ftot.grad = @(x) fp.grad(x) + flap.grad(x);
- ftot.eval = @(x) fp.eval(x) + flap.eval(x);
-
- paramproj.A = @(x) A(K*x);
- paramproj.At = @(x) K'*At(x);
- paramproj.nu = nu^2*param.nu^2;
- paramproj.tight = 0;
- paramproj.verbose = param.verbose-1;
- paramproj.y = y';
- paramproj.maxit = 50;
- ffid.eval = @(x) eps;
- ffid.prox = @(x,T) proj_b2(x,T,paramproj);
-
- param.gamma = 0.5/(nu+lambda*nu*G.lmax);
-
- [sol,infos] = forward_backward(alpha_in, ffid, ftot, param);
-
-end
-
-
-
-
-end
diff --git a/graph_ml/gsp_ml_rls_tv.m b/graph_ml/gsp_ml_rls_tv.m
deleted file mode 100644
index 1f1f080..0000000
--- a/graph_ml/gsp_ml_rls_tv.m
+++ /dev/null
@@ -1,150 +0,0 @@
-function [sol, infos] = gsp_ml_rls_tv(G, xl, y, k, tau,lambda, A, At, param)
-%GSP_ML_RLS_TV Manifold Learning regularized least square with TV regularization
-% Usage: sol = gsp_ml_rls_tv(G, xl, y, k, tau,lambda);
-% sol = gsp_ml_rls_tv(G, xl, y, k, tau, lambda, A, At);
-% sol = gsp_ml_rls_tv(G, xl, y, k, tau, lambda, A, At, param);
-% [sol, infos] = gsp_ml_rls_tv(...)
-%
-% Input parameters:
-% G : Graph
-% xl : labeled points
-% y : labels
-% k : kernel
-% tau : regularization parameters
-% lambda : regularization parameters
-% A : Operator
-% At : Adoint operator
-% param : Optional parameters
-% Output parameters:
-% sol : solution of the problem (kernel coefficients)
-% infos : convergence info
-%
-% param is a structure of optional argument given to the solver
-% gradient_descent. Please see the function gradient descent for more
-% information.
-%
-% In param, you also have to set an upperbound for the operator A as
-% param.nu!
-%
-% This function solves the following problem:
-%
-% argmin_alpha || A (K alpha) - y ||_2^2
-% + tau *alpha^T K alpha
-% + lambda || L K alpha ||_TVG
-%
-% If tau is set to zero, then the following problem is solved
-%
-% argmin_alpha alpha^T K alpha
-% + lambda || L K alpha ||_TVG
-% s. t. A (K alpha) = y
-%
-
-% Author: Nathanael Perraudin
-% Date : 8 decembre 2014
-
-
-if nargin<7
-%
-% Url: http://lts2research.epfl.ch/gsp/doc/graph_ml/gsp_ml_rls_tv.php
-
-% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
-%
-% This program is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
-%
-% This program is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program. If not, see .
-
-% If you use this toolbox please kindly cite
-% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
-% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
-% ArXiv e-prints, Aug. 2014.
-% http://arxiv.org/abs/1408.5781
- A = @(x) x;
-end
-
-
-if nargin<8
- At = A;
-end
-
-if nargin<9
- param = struct;
-end
-
-
-if ~isfield(param, 'tol'), param.tol = 1e-6; end
-if ~isfield(param, 'nu'), param.nu = 1; end
-if ~isfield(param, 'verbose'), param.verbose = 1; end
-
-
-
-N = size(xl,2);
-
-% Evaluate the kernel on the data points
-K = gsp_rkhs_evaluate(k,xl);
-nu = norm(K);
-
-alpha_in = zeros(N,size(y,2));
-
-if ~isfield(G,'D');
- G = gsp_adj2vec(G);
-end
-if ~isfield(G,'lmax');
- G = gsp_estimate_lmax(G);
-end
-
-paramtv.verbose = param.verbose - 1;
-ftv.eval = @(x) sum(lambda*gsp_norm_tv(G,K*x));
-ftv.prox = @(x,T) gsp_prox_tv(x,lambda*T,G,paramtv);
-
-
-if tau >0
-
- fp.eval = @(x) tau * sum(gsp_norm_tik(K,x));
- fp.grad = @(x) 2*tau*K*x;
-
- ffid.eval = @(x) norm(A(K*x)-y,'fro')^2;
- ffid.grad = @(x) 2*K'*At(A(K*x)-y);
-
- ftot.grad = @(x) ffid.grad(x) + fp.grad(x);
- ftot.eval = @(x) ffid.eval(x) + fp.eval(x);
-
-
- param.gamma = 0.5/(tau*nu+nu^2*param.nu^2+lambda*nu*G.lmax);
-
- [sol,infos] = forward_backward(alpha_in, ftv, ftot, param);
-else
-
- fp.eval = @(x) x'*K*x;
- fp.grad = @(x) 2*K*x;
-
-
- paramproj.A = @(x) A(K*x);
- paramproj.At = @(x) K'*At(x);
- paramproj.nu = nu^2*param.nu^2;
- paramproj.tight = 0;
- paramproj.verbose = param.verbose-1;
- paramproj.y = y;
- paramproj.maxit = 50;
- ffid.eval = @(x) eps;
- ffid.prox = @(x,T) proj_b2(x,T,paramproj);
-
- param.gamma = 0.5/(nu+lambda*nu*G.lmax);
-
- [sol,infos] = generalized_forward_backward(alpha_in, {ffid,ftv}, fp, param);
-
-end
-
-
-
-
-end
diff --git a/graph_ml/gsp_regression_Lx_l1.m b/graph_ml/gsp_regression_Lx_l1.m
deleted file mode 100644
index 5037ac4..0000000
--- a/graph_ml/gsp_regression_Lx_l1.m
+++ /dev/null
@@ -1,161 +0,0 @@
-function sol = gsp_regression_Lx_l1(G, M, y, tau, param )
-%GSP_REGRESSION_LX_L1 Regression using a piecewise linear assumption
-% Usage: sol = gsp_regression_tv(G, M, y, tau );
-% sol = gsp_regression_tv(G, M, y, tau, param );
-%
-% Input parameters:
-% G : Graph
-% M : Mask (to determine which label is known)
-% y : label (total size of the problem)
-% tau : regularization parameter (weight for tv)
-% param : optional structure of parameters
-%
-% Output parameters:
-% sol : Solution of the problem
-%
-% This function solve the following problem
-%
-% argmin_x || M x - y ||_2^2 + tau || Lx ||_1
-%
-% If tau is set to zero, then the following problem is solved
-%
-% argmin_x || Lx ||_1 s. t. M x - y = 0
-%
-% This function uses the UNLocBoX.
-%
-% See also: gsp_regression_tv gsp_regression_tik gsp_classification_tv
-%
-% Url: http://lts2research.epfl.ch/gsp/doc/graph_ml/gsp_regression_Lx_l1.php
-
-% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
-%
-% This program is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
-%
-% This program is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program. If not, see .
-
-% If you use this toolbox please kindly cite
-% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
-% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
-% ArXiv e-prints, Aug. 2014.
-% http://arxiv.org/abs/1408.5781
-
-% Author: Vassilis Kalofolias
-% Date : february 2016
-
-
-%% Optional parameters
-
-if nargin < 5
- param = struct;
-end
-
-if nargin < 4
- tau = 0;
-end
-
-
-if ~isfield(param,'verbose'), param.verbose = 1; end
-
-%% prepare the graph
-
-G = gsp_estimate_lmax(G);
-G = gsp_adj2vec(G);
-
-
-
-
-
-paramsolver = param;
-
-
-if tau > 0
- M_op =@(x) bsxfun(@times, M, x);
-
- fg.grad = @(x) 2 * M_op(M_op(x) - y);
- fg.eval = @(x) norm(M_op(x) - y)^2;
- fg.beta = 2;
-
- % setting the function ||Lx||_1
- paramtv.verbose = param.verbose-1;
- ftv.prox = @(x,T) prox_l1(x,tau*T,paramtv);
- ftv.eval = @(x) tau *sum(vec(G.L*x));
- ftv.L = @(x ) G.L * x;
- ftv.Lt = @(x ) G.L * x;
- ftv.norm_L = G.lmax^2;
- %% solve the problem
- % setting the timestep
-
-
- sol = solvep(y, {ftv, fg}, paramsolver);
-
-
-else
-% % param_b2.verbose = param.verbose -1;
-% % param_b2.y = y;
-% % param_b2.A = @(x) M.*x;
-% % param_b2.At = @(x) M.*x;
-% % param_b2.tight = param.tight;
-% % param_b2.epsilon = 0;
-% % fproj.prox = @(x,T) proj_b2(x,T,param_b2);
-% % fproj.eval = @(x) eps;
-%
-% fproj.prox = @(x,T) x - M.*x + M.*y;
-% fproj.eval = @(x) eps;
-%
-% % setting the function ftv
-%
-% % paramtv.verbose = param.verbose-1;
-% % ftv.prox = @(x,T) gsp_prox_tv(x,T,G,paramtv);
-% % ftv.eval = @(x) sum(gsp_norm_tv(G,x));
-%
-% paramtv.verbose = param.verbose-1;
-% ftv.prox = @(x,T) prox_l1(x,T,paramtv);
-% ftv.eval = @(x) sum(gsp_norm_tv(G,x));
-% ftv.L = @(x ) G.Diff * x;
-% ftv.Lt = @(x ) G.Diff' * x;
-% ftv.norm_L = G.lmax;
-%
-% %% solve the problem
-% sol = solvep(y,{ftv,fproj},paramsolver);
-
-
- A = G.L(:,~logical(M));
- b = - G.L(:,logical(M)) * y(logical(M),:);
-
- paramtv.verbose = param.verbose-1;
- paramtv.y = b;
- ftv.prox = @(x,T) prox_l1(x, T, paramtv);
- ftv.eval = @(x) sum(sum(abs(A*x-b)));
- ftv.L = @(x) A * x;
- ftv.Lt = @(x) A' * x;
- ftv.norm_L = G.lmax^2;
-
-
- %% solve the problem
- solt = solvep(y(~logical(M),:), {ftv}, paramsolver);
-
- sol = y;
- sol(~logical(M), :) = solt;
-
-end
-
-
-
-
-
-
-% sol = sol(logical(1-M));
-% sol = reshape(sol,[],size(M,2));
-
-end
-
diff --git a/graph_ml/gsp_regression_knn.m b/graph_ml/gsp_regression_knn.m
deleted file mode 100644
index f783f0f..0000000
--- a/graph_ml/gsp_regression_knn.m
+++ /dev/null
@@ -1,50 +0,0 @@
-function sol = gsp_regression_knn(G,M,y)
-%GSP_REGRESSION_KNN Regression using knn
-% Usage: sol = gsp_regression_knn(G ,M, y );
-%
-% Input parameters:
-% G : Graph
-% M : Mask (to determine with label is known)
-% y : label (total size of the problem)
-%
-% Output parameters:
-% sol : Solution of the problem
-%
-% Warning: In order to use this function, you have to use a special
-% graph. This graph can be computed with the function:
-% GSP_KNN_CLASSIFY_GRAPH .
-%
-% See also: gsp_classification_tik gsp_classification_tv
-%
-% Url: http://lts2research.epfl.ch/gsp/doc/graph_ml/gsp_regression_knn.php
-
-% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
-%
-% This program is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
-%
-% This program is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program. If not, see .
-
-% If you use this toolbox please kindly cite
-% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
-% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
-% ArXiv e-prints, Aug. 2014.
-% http://arxiv.org/abs/1408.5781
-
-% Author: Nathanael Perraudin
-% Date : 24 July 2015
-% Testing: test_graph_ml
-
- solt = repmat(G.de.^(-1),1,size(y,2)) .* (G.We * y(logical(M),:) );
- sol = y;
- sol(logical(1-M),:) = solt;
-end
diff --git a/graph_ml/gsp_regression_tik.m b/graph_ml/gsp_regression_tik.m
deleted file mode 100644
index 963e1fa..0000000
--- a/graph_ml/gsp_regression_tik.m
+++ /dev/null
@@ -1,189 +0,0 @@
-function sol = gsp_regression_tik(G ,M, y , tau, param )
-%GSP_REGRESSION_TIK Regression using graph and Tikhonov
-% Usage: sol = gsp_regression_tik(G ,M, y , tau );
-% sol = gsp_regression_tik(G ,M, y , tau, param );
-%
-% Input parameters:
-% G : Graph
-% M : Mask (to determine with label is known)
-% y : label (total size of the problem)
-% tau : regularization parameter (weight for tv)
-% param : optional structure of parameters
-%
-% Output parameters:
-% sol : Solution of the problem
-%
-% This function solve the following problem
-%
-% argmin_x || M x - y ||_2^2 + tau || nabla_G x ||_2^2
-%
-% If tau is set to zero, then the following problem is solved
-%
-% argmin_x || nabla_G x ||_2^2 s. t. M x - y = 0
-%
-% For the las problem, this function can compute an exact solution if
-% param.exact is activated. It will be efficient if the number of
-% unlabelled points is low.
-%
-% Additional parameters
-% ---------------------
-%
-% param.verbose : Verbosity of the iterative algorithm
-% param.direct : Direct computation of the exact solution (only for
-% tau = 0). (Default tau==0)
-% param.exact : Exact computation of the exact solution (only for
-% tau = 0 and param.direct = 0). (Default: (numel(M)-nnz(M))<1000 )
-% param.order : Degree of the Chebyshev approximation (default=30).
-% (only for tau = 0, param.direct = 0, param.exact = 0)
-%
-% This function uses the UNLocBoX.
-%
-% See also: gsp_classification_tik gsp_regression_tv
-%
-%
-% Url: http://lts2research.epfl.ch/gsp/doc/graph_ml/gsp_regression_tik.php
-
-% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
-%
-% This program is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
-%
-% This program is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program. If not, see .
-
-% If you use this toolbox please kindly cite
-% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
-% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
-% ArXiv e-prints, Aug. 2014.
-% http://arxiv.org/abs/1408.5781
-
-% Author: Nathanael Perraudin
-% Date : 24 July 2015
-% Testing: test_graph_ml
-
-
-
-%% Optional parameters
-
-if nargin<5
- param = struct;
-end
-
-if nargin<4
- tau = 0;
-end
-
-
-
-if ~isfield(param,'verbose'), param.verbose = 1; end
-if ~isfield(param,'direct'), param.direct = (tau==0); end
-if ~isfield(param,'exact'), param.exact = (numel(M)-nnz(M))<1000; end
-
-if param.direct && tau==0
- if param.verbose
- fprintf('Using direct solution \n')
- end
- if (numel(M) == size(M,1)) || (numel(M) == size(M,2))
- indl = find(M);
- indu = find(1-M);
- else
- error('I cannot handle this case yet');
- end
- Luu = (G.L(indu,indu));
- Wul = - G.L(indu,indl);
- tmp = (Wul * y(indl,:));
- if ~param.exact
- if ~isfield(param,'order'), param.order = 30; end
- Gtemp.L = Luu;
- Gtemp.N = size(Luu,1);
-% Gtemp = gsp_estimate_lmax(Gtemp);
-% cheb_coeffs = gsp_cheby_coeff(Gtemp, @(x) pinv_n(x,1e-8),...
-% param.order, param.order +1);
-% solt = gsp_cheby_op(Gtemp, cheb_coeffs, tmp);
- paramt.method = 'lanczos';
- paramt.order = param.order;
- solt = gsp_filter_analysis(Gtemp, @(x) pinv_n(x,1e-8),tmp,paramt);
-
- else
- solt = pinv(full(Luu)) * tmp;
-% solt = Luu \ tmp;
- end
- sol = y;
- sol(indu,:) = solt;
- return
-end
-
-
-%% prepare the graph
-
-G = gsp_estimate_lmax(G);
-%G = gsp_adj2vec(G);
-
-
-%% set the
-% setting the function f2 (see unlocbox for help)
-
-Mop =@(x) bsxfun(@times,M,x);
-if tau > 0
- fg.grad = @(x) 2*Mop(Mop(x)-y);
- fg.eval = @(x) norm(Mop(x)-y)^2;
- fg.beta = 2;
- paramtik.verbose = param.verbose -1;
- ftik.prox = @(x,T) gsp_prox_tik(x,tau * T,G,paramtik);
- ftik.eval = @(x) tau* sum(gsp_norm_tik(G,x));
-
-
-
-else
-% param_b2.verbose = param.verbose -1;
-% param_b2.y = y;
-% param_b2.A = @(x) M.*x;
-% param_b2.At = @(x) M.*x;
-% param_b2.tight = param.tight;
-% param_b2.epsilon = 0;
-% fproj.prox = @(x,T) proj_b2(x,T,param_b2);
-% fproj.eval = @(x) eps;
-
- fproj.prox = @(x,T) x - Mop(x) + Mop(y);
- fproj.eval = @(x) eps;
- ftik.eval = @(x) sum(gsp_norm_tik(G,x));
- Ltmp = G.L + G.L';
- ftik.grad = @(x) Ltmp*x;
- ftik.beta = 2*G.lmax;
-end
-
-
-
-
-%% solve the problem
-
-% setting different parameter for the simulation
-paramsolver = param;
-
-if tau > 0
- sol = forward_backward(y,ftik,fg,paramsolver);
-else
- sol = forward_backward(y,fproj,ftik,paramsolver);
-end
-
-% sol = sol(logical(1-M));
-%
-% sol = reshape(sol,[],size(M,2));
-
-end
-
-
-function r = pinv_n(x,t)
-
-r = double(abs(x)>t) .* 1./x;
-
-end
-
diff --git a/graph_ml/gsp_regression_tv.m b/graph_ml/gsp_regression_tv.m
deleted file mode 100644
index 8ff038c..0000000
--- a/graph_ml/gsp_regression_tv.m
+++ /dev/null
@@ -1,165 +0,0 @@
-function sol = gsp_regression_tv(G, M, y, tau, param )
-%GSP_REGRESSION_TV Regression using graph and TV
-% Usage: sol = gsp_regression_tv(G, M, y, tau );
-% sol = gsp_regression_tv(G, M, y, tau, param );
-%
-% Input parameters:
-% G : Graph
-% M : Mask (to determine which label is known)
-% y : label (total size of the problem)
-% tau : regularization parameter (weight for tv)
-% param : optional structure of parameters
-%
-% Output parameters:
-% sol : Solution of the problem
-%
-% This function solve the following problem
-%
-% argmin_x || M x - y ||_2^2 + tau || x ||_{G TV}
-%
-% If tau is set to zero, then the following problem is solved
-%
-% argmin_x || x ||_{G TV} s. t. M x - y = 0
-%
-% This function uses the UNLocBoX.
-%
-% See also: gsp_regression_tik gsp_classification_tv
-%
-% Url: http://lts2research.epfl.ch/gsp/doc/graph_ml/gsp_regression_tv.php
-
-% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
-%
-% This program is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
-%
-% This program is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program. If not, see .
-
-% If you use this toolbox please kindly cite
-% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
-% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
-% ArXiv e-prints, Aug. 2014.
-% http://arxiv.org/abs/1408.5781
-
-% Author: Nathanael Perraudin
-% Date : 24 July 2015
-
-
-%% Optional parameters
-
-if nargin < 5
- param = struct;
-end
-
-if nargin < 4
- tau = 0;
-end
-
-
-if ~isfield(param,'verbose'), param.verbose = 1; end
-
-%% prepare the graph
-
-G = gsp_estimate_lmax(G);
-G = gsp_adj2vec(G);
-
-
-
-
-
-paramsolver = param;
-
-
-if tau > 0
- M_op =@(x) bsxfun(@times, M, x);
-
- fg.grad = @(x) 2 * M_op(M_op(x) - y);
- fg.eval = @(x) norm(M_op(x) - y)^2;
- fg.beta = 2;
-
- % setting the function ftv
-% paramtv.verbose = param.verbose-1;
-% ftv.prox = @(x,T) gsp_prox_tv(x,tau*T,G,paramtv);
-% ftv.eval = @(x) tau *sum(gsp_norm_tv(G,x));
-
- paramtv.verbose = param.verbose-1;
- ftv.prox = @(x,T) prox_l1(x,tau*T,paramtv);
- ftv.eval = @(x) tau *sum(gsp_norm_tv(G,x));
- ftv.L = @(x ) G.Diff * x;
- ftv.Lt = @(x ) G.Diff' * x;
- ftv.norm_L = G.lmax;
- %% solve the problem
- % setting the timestep
-
-
- sol = solvep(y,{ftv,fg},paramsolver);
-
-
-else
-% % param_b2.verbose = param.verbose -1;
-% % param_b2.y = y;
-% % param_b2.A = @(x) M.*x;
-% % param_b2.At = @(x) M.*x;
-% % param_b2.tight = param.tight;
-% % param_b2.epsilon = 0;
-% % fproj.prox = @(x,T) proj_b2(x,T,param_b2);
-% % fproj.eval = @(x) eps;
-%
-% fproj.prox = @(x,T) x - M.*x + M.*y;
-% fproj.eval = @(x) eps;
-%
-% % setting the function ftv
-%
-% % paramtv.verbose = param.verbose-1;
-% % ftv.prox = @(x,T) gsp_prox_tv(x,T,G,paramtv);
-% % ftv.eval = @(x) sum(gsp_norm_tv(G,x));
-%
-% paramtv.verbose = param.verbose-1;
-% ftv.prox = @(x,T) prox_l1(x,T,paramtv);
-% ftv.eval = @(x) sum(gsp_norm_tv(G,x));
-% ftv.L = @(x ) G.Diff * x;
-% ftv.Lt = @(x ) G.Diff' * x;
-% ftv.norm_L = G.lmax;
-%
-% %% solve the problem
-% sol = solvep(y,{ftv,fproj},paramsolver);
-
-
- A = G.Diff(:,~logical(M));
- b = - G.Diff(:,logical(M)) * y(logical(M),:);
-
- paramtv.verbose = param.verbose-1;
- paramtv.y = b;
- ftv.prox = @(x,T) prox_l1(x,T,paramtv);
- ftv.eval = @(x) sum(sum(abs(A*x-b)));
- ftv.L = @(x ) A * x;
- ftv.Lt = @(x ) A' * x;
- ftv.norm_L = G.lmax;
-
-
- %% solve the problem
- solt = solvep(y(~logical(M),:),{ftv},paramsolver);
-
- sol = y;
- sol(~logical(M),:) = solt;
-
-end
-
-
-
-
-
-
-% sol = sol(logical(1-M));
-% sol = reshape(sol,[],size(M,2));
-
-end
-
diff --git a/graph_ml/gsp_rkhs_evaluate.m b/graph_ml/gsp_rkhs_evaluate.m
deleted file mode 100644
index 768b600..0000000
--- a/graph_ml/gsp_rkhs_evaluate.m
+++ /dev/null
@@ -1,94 +0,0 @@
-function [ K ] = gsp_rkhs_evaluate( k,x,y, method )
-%GSP_RKHS_EVALUATE Function that evaluate a kernel
-% Usage: [ K ] = gsp_rkhs_evaluate( k,x,y );
-%
-% Input parameters:
-% k : kernel
-% x : points (each feature vector is a column)
-% y : points (each feature vector is a column) (default x)
-% method : Method used to compute the kernel (default: 'mixed')
-%
-% Output parameters:
-% K : Evaluation of the kernel
-%
-% This function evaluate the kernel k between all point of x and y.
-%
-% Those different methods are availlable:
-% 'copy' : Copy both x and y an perform one shot evaluation of the
-% kernel
-% 'loop' : Perform a double loop to evalute the kernl
-% 'mixed' : Use a single loop and a copy (this is the default)
-%
-%
-% Url: http://lts2research.epfl.ch/gsp/doc/graph_ml/gsp_rkhs_evaluate.php
-
-% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
-%
-% This program is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
-%
-% This program is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program. If not, see .
-
-% If you use this toolbox please kindly cite
-% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
-% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
-% ArXiv e-prints, Aug. 2014.
-% http://arxiv.org/abs/1408.5781
-
-% Author: Nathanael Perraudin
-% Date : 8 December 2014
-
-if nargin < 4
- method = 'mixed';
-end
-
-if nargin <3
- y = x;
-end
-
-N = size(x,2);
-M = size(y,2);
-
-if iscell(k)
- K = zeros(N,M*length(k));
- for ii = 1:length(k)
- K(:,(ii-1)*M+(1:M)) = gsp_rkhs_evaluate( k{ii},x,y, method );
- end
- return
-end
-
-
-switch method
- case 'copy'
- K = k(repmat(x,M,1)',repmat(y,N,1));
- case 'loop'
- K = zeros(N,M);
- for ii = 1:N
- for jj = 1:M
- K(ii,jj) = k(x(:,ii),y(:,jj));
- end
- end
- case 'mixed'
- K = zeros(N,M);
- for ii = 1:N
- K(ii,:) = k(repmat(x(:,ii),1,M),y);
- end
- otherwise
- error('GSP_RKHS_EVALUATE: Unknown method')
-end
-
-
-
-
-end
-
-
diff --git a/graphs/Contents.m b/graphs/Contents.m
index d91b220..a25eff9 100644
--- a/graphs/Contents.m
+++ b/graphs/Contents.m
@@ -47,7 +47,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/Contents.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_2dgrid.m b/graphs/gsp_2dgrid.m
index d3de002..9d971c8 100644
--- a/graphs/gsp_2dgrid.m
+++ b/graphs/gsp_2dgrid.m
@@ -27,7 +27,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_2dgrid.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_airfoil.m b/graphs/gsp_airfoil.m
index 3c42894..35b3dc9 100644
--- a/graphs/gsp_airfoil.m
+++ b/graphs/gsp_airfoil.m
@@ -24,7 +24,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_airfoil.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_bunny.m b/graphs/gsp_bunny.m
index 6bc9ad8..e1e2e37 100644
--- a/graphs/gsp_bunny.m
+++ b/graphs/gsp_bunny.m
@@ -21,7 +21,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_bunny.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_comet.m b/graphs/gsp_comet.m
index 51c3006..51d4526 100644
--- a/graphs/gsp_comet.m
+++ b/graphs/gsp_comet.m
@@ -22,7 +22,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_comet.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_community.m b/graphs/gsp_community.m
index 01ddbcf..9f86b91 100644
--- a/graphs/gsp_community.m
+++ b/graphs/gsp_community.m
@@ -41,7 +41,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_community.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_components.m b/graphs/gsp_components.m
index 76dee7f..f0a8193 100644
--- a/graphs/gsp_components.m
+++ b/graphs/gsp_components.m
@@ -24,7 +24,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_components.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_copy_graph_attributes.m b/graphs/gsp_copy_graph_attributes.m
index 52d75ae..1d8152e 100644
--- a/graphs/gsp_copy_graph_attributes.m
+++ b/graphs/gsp_copy_graph_attributes.m
@@ -30,7 +30,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_copy_graph_attributes.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_cube.m b/graphs/gsp_cube.m
index 70bcf4f..9110530 100644
--- a/graphs/gsp_cube.m
+++ b/graphs/gsp_cube.m
@@ -33,7 +33,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_cube.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_david_sensor_network.m b/graphs/gsp_david_sensor_network.m
index ef10dc9..be05525 100644
--- a/graphs/gsp_david_sensor_network.m
+++ b/graphs/gsp_david_sensor_network.m
@@ -28,7 +28,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_david_sensor_network.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_erdos_renyi.m b/graphs/gsp_erdos_renyi.m
index 89cc85d..6c518d7 100644
--- a/graphs/gsp_erdos_renyi.m
+++ b/graphs/gsp_erdos_renyi.m
@@ -36,7 +36,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_erdos_renyi.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_full_connected.m b/graphs/gsp_full_connected.m
index 8708778..bbaec89 100644
--- a/graphs/gsp_full_connected.m
+++ b/graphs/gsp_full_connected.m
@@ -22,7 +22,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_full_connected.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_graph.m b/graphs/gsp_graph.m
index 7fbc5c2..dda77cd 100644
--- a/graphs/gsp_graph.m
+++ b/graphs/gsp_graph.m
@@ -25,7 +25,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_graph.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_graph_default_parameters.m b/graphs/gsp_graph_default_parameters.m
index 69f2033..917f76e 100644
--- a/graphs/gsp_graph_default_parameters.m
+++ b/graphs/gsp_graph_default_parameters.m
@@ -65,7 +65,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_graph_default_parameters.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_graph_default_plotting_parameters.m b/graphs/gsp_graph_default_plotting_parameters.m
index 243952b..6c912b1 100644
--- a/graphs/gsp_graph_default_plotting_parameters.m
+++ b/graphs/gsp_graph_default_plotting_parameters.m
@@ -26,7 +26,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_graph_default_plotting_parameters.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_hypergraph.m b/graphs/gsp_hypergraph.m
index e675670..a2d52fd 100644
--- a/graphs/gsp_hypergraph.m
+++ b/graphs/gsp_hypergraph.m
@@ -39,7 +39,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_hypergraph.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_logo.m b/graphs/gsp_logo.m
index fc8db01..e032650 100644
--- a/graphs/gsp_logo.m
+++ b/graphs/gsp_logo.m
@@ -16,7 +16,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_logo.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_low_stretch_tree.m b/graphs/gsp_low_stretch_tree.m
index c5f2e5b..d447b0f 100644
--- a/graphs/gsp_low_stretch_tree.m
+++ b/graphs/gsp_low_stretch_tree.m
@@ -26,7 +26,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_low_stretch_tree.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_minnesota.m b/graphs/gsp_minnesota.m
index b9e8322..78df54f 100644
--- a/graphs/gsp_minnesota.m
+++ b/graphs/gsp_minnesota.m
@@ -36,7 +36,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_minnesota.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_modified_path.m b/graphs/gsp_modified_path.m
index 6e39015..f59b508 100644
--- a/graphs/gsp_modified_path.m
+++ b/graphs/gsp_modified_path.m
@@ -25,7 +25,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_modified_path.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_nn_graph.m b/graphs/gsp_nn_graph.m
index 233e6ce..12b1d59 100644
--- a/graphs/gsp_nn_graph.m
+++ b/graphs/gsp_nn_graph.m
@@ -42,7 +42,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_nn_graph.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_nn_hypergraph.m b/graphs/gsp_nn_hypergraph.m
index 5eea1fd..12f13e4 100644
--- a/graphs/gsp_nn_hypergraph.m
+++ b/graphs/gsp_nn_hypergraph.m
@@ -30,7 +30,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_nn_hypergraph.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_non_uniform.m b/graphs/gsp_non_uniform.m
index e141fdc..dfedb24 100644
--- a/graphs/gsp_non_uniform.m
+++ b/graphs/gsp_non_uniform.m
@@ -26,7 +26,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_non_uniform.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_non_uniform_patch.m b/graphs/gsp_non_uniform_patch.m
index 5fa93b5..b87df5d 100644
--- a/graphs/gsp_non_uniform_patch.m
+++ b/graphs/gsp_non_uniform_patch.m
@@ -32,7 +32,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_non_uniform_patch.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_path.m b/graphs/gsp_path.m
index c82207d..e525167 100644
--- a/graphs/gsp_path.m
+++ b/graphs/gsp_path.m
@@ -30,7 +30,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_path.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_random_regular.m b/graphs/gsp_random_regular.m
index deb68bb..cd55e0b 100644
--- a/graphs/gsp_random_regular.m
+++ b/graphs/gsp_random_regular.m
@@ -25,7 +25,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_random_regular.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_random_ring.m b/graphs/gsp_random_ring.m
index 8743701..83c8a2e 100644
--- a/graphs/gsp_random_ring.m
+++ b/graphs/gsp_random_ring.m
@@ -21,7 +21,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_random_ring.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_ring.m b/graphs/gsp_ring.m
index 60e19dc..eccc2bb 100644
--- a/graphs/gsp_ring.m
+++ b/graphs/gsp_ring.m
@@ -27,7 +27,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_ring.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_rmse_mv_graph.m b/graphs/gsp_rmse_mv_graph.m
index 0a0be79..8633398 100644
--- a/graphs/gsp_rmse_mv_graph.m
+++ b/graphs/gsp_rmse_mv_graph.m
@@ -29,7 +29,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_rmse_mv_graph.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_sensor.m b/graphs/gsp_sensor.m
index bd60b6d..f83448b 100644
--- a/graphs/gsp_sensor.m
+++ b/graphs/gsp_sensor.m
@@ -32,7 +32,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_sensor.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_separate_graph.m b/graphs/gsp_separate_graph.m
index 5122dbb..8a36bab 100644
--- a/graphs/gsp_separate_graph.m
+++ b/graphs/gsp_separate_graph.m
@@ -12,7 +12,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_separate_graph.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_sphere.m b/graphs/gsp_sphere.m
index 954b80d..b162b49 100644
--- a/graphs/gsp_sphere.m
+++ b/graphs/gsp_sphere.m
@@ -33,7 +33,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_sphere.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_spiral.m b/graphs/gsp_spiral.m
index 51a6e66..080f513 100644
--- a/graphs/gsp_spiral.m
+++ b/graphs/gsp_spiral.m
@@ -29,7 +29,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_spiral.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_stochastic_block_graph.m b/graphs/gsp_stochastic_block_graph.m
index 7fbb667..3f3d19f 100644
--- a/graphs/gsp_stochastic_block_graph.m
+++ b/graphs/gsp_stochastic_block_graph.m
@@ -14,7 +14,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_stochastic_block_graph.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_subgraph.m b/graphs/gsp_subgraph.m
index 9aed2c3..29a9c07 100644
--- a/graphs/gsp_subgraph.m
+++ b/graphs/gsp_subgraph.m
@@ -14,7 +14,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_subgraph.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_swiss_roll.m b/graphs/gsp_swiss_roll.m
index 90fa998..2f369c0 100644
--- a/graphs/gsp_swiss_roll.m
+++ b/graphs/gsp_swiss_roll.m
@@ -22,7 +22,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_swiss_roll.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_torus.m b/graphs/gsp_torus.m
index 78c5627..908ca3a 100644
--- a/graphs/gsp_torus.m
+++ b/graphs/gsp_torus.m
@@ -27,7 +27,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_torus.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_tree.m b/graphs/gsp_tree.m
index 4ae396f..ece34c6 100644
--- a/graphs/gsp_tree.m
+++ b/graphs/gsp_tree.m
@@ -21,7 +21,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_tree.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_two_moons.m b/graphs/gsp_two_moons.m
index aebb4c9..56f9bce 100644
--- a/graphs/gsp_two_moons.m
+++ b/graphs/gsp_two_moons.m
@@ -25,7 +25,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_two_moons.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_update_coordinates.m b/graphs/gsp_update_coordinates.m
index 2dba32b..c0a9748 100644
--- a/graphs/gsp_update_coordinates.m
+++ b/graphs/gsp_update_coordinates.m
@@ -16,7 +16,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_update_coordinates.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/gsp_update_weights.m b/graphs/gsp_update_weights.m
index 14ef2c6..7f5d766 100644
--- a/graphs/gsp_update_weights.m
+++ b/graphs/gsp_update_weights.m
@@ -26,7 +26,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/gsp_update_weights.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/misc/createRandRegGraph.m b/graphs/misc/createRandRegGraph.m
index 6f5e625..e61609c 100644
--- a/graphs/misc/createRandRegGraph.m
+++ b/graphs/misc/createRandRegGraph.m
@@ -23,7 +23,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/misc/createRandRegGraph.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graphs/misc/rescale_center.m b/graphs/misc/rescale_center.m
index 866744f..f6de288 100644
--- a/graphs/misc/rescale_center.m
+++ b/graphs/misc/rescale_center.m
@@ -4,7 +4,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/graphs/misc/rescale_center.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/gsp_install.m b/gsp_install.m
index 39f405e..35806fc 100644
--- a/gsp_install.m
+++ b/gsp_install.m
@@ -18,7 +18,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/gsp_install.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/gsp_install_unlocbox.m b/gsp_install_unlocbox.m
index 23c8f2a..8c2c14f 100644
--- a/gsp_install_unlocbox.m
+++ b/gsp_install_unlocbox.m
@@ -8,7 +8,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/gsp_install_unlocbox.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/gsp_make.m b/gsp_make.m
index b78ed1e..fa9a4b3 100644
--- a/gsp_make.m
+++ b/gsp_make.m
@@ -10,7 +10,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/gsp_make.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/gsp_start.m b/gsp_start.m
index 1b464a4..c2871bb 100644
--- a/gsp_start.m
+++ b/gsp_start.m
@@ -15,7 +15,7 @@ function gsp_start()
% Url: http://lts2research.epfl.ch/gsp/doc/gsp_start.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/gspbox_version b/gspbox_version
index 4b9fcbe..cb0c939 100644
--- a/gspbox_version
+++ b/gspbox_version
@@ -1 +1 @@
-0.5.1
+0.5.2
diff --git a/imageprocessing/Contents.m b/imageprocessing/Contents.m
index f9ac9f3..bd55743 100644
--- a/imageprocessing/Contents.m
+++ b/imageprocessing/Contents.m
@@ -10,7 +10,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/imageprocessing/Contents.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/imageprocessing/gsp_patch_graph.m b/imageprocessing/gsp_patch_graph.m
index fcebda1..1ebee03 100644
--- a/imageprocessing/gsp_patch_graph.m
+++ b/imageprocessing/gsp_patch_graph.m
@@ -30,7 +30,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/imageprocessing/gsp_patch_graph.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/graph_ml/classify_usps.m b/learn_graph/Contents.m
similarity index 61%
rename from graph_ml/classify_usps.m
rename to learn_graph/Contents.m
index 3f6e9d0..44b19da 100644
--- a/graph_ml/classify_usps.m
+++ b/learn_graph/Contents.m
@@ -1,13 +1,17 @@
-
-clear
-close all;
-[ x,y,xx,yy,f,ff ] = prepare_usps_full( );
-%%[x, y, xx, yy] = load_usps_full();
+% GSPBOX - Graph learning
+%
+% Optimization model - Learning from smooth signal
+% gsp_learn_graph_log_degrees - Learn weighted adjacency matrix from pairwise distances using negative log prior on nodes degrees
+% gsp_learn_graph_l2_degrees - Learn weighted adjacency matrix from pairwise distances using l2 prior on nodes degrees
+%
+% For help, bug reports, suggestions etc. please send email to
+% gspbox 'dash' support 'at' groupes 'dot' epfl 'dot' ch
%
-% Url: http://lts2research.epfl.ch/gsp/doc/graph_ml/classify_usps.php
+%
+% Url: http://lts2research.epfl.ch/gsp/doc/learn_graph/Contents.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
@@ -28,19 +32,4 @@
% ArXiv e-prints, Aug. 2014.
% http://arxiv.org/abs/1408.5781
-% Nel = 300;
-% x = x(:,1:Nel);
-% xx = xx(:,1:Nel);
-% y = y(1:Nel);
-% yy = yy(1:Nel);
-% f = f(:,1:Nel);
-% ff = ff(:,1:Nel);
-param.verbose = 1;
-param.k = 6;
-
-%%
-%[rel_errorx, name ] = graph_mlcl_compare_all(x(:,1:1000)',xx(:,1:1000)',y(1:1000),yy(1:1000), param);
-[rel_errorx, name ] = graph_mlcl_compare_all(x',xx',y,yy, param);
-%%
-%[rel_errorf, name ] = graph_mlcl_compare_all(f',ff',y,yy, param);
diff --git a/learn_graph/gsp_learn_graph_l2_degrees.m b/learn_graph/gsp_learn_graph_l2_degrees.m
new file mode 100644
index 0000000..80f54dd
--- /dev/null
+++ b/learn_graph/gsp_learn_graph_l2_degrees.m
@@ -0,0 +1,269 @@
+function [W, stat] = gsp_learn_graph_l2_degrees(Z, a, params)
+%GSP_LEARN_GRAPH_L2_DEGREES Learn graph from pairwise distances using l2 prior on nodes degrees
+% Usage: [W, stat] = gsp_learn_graph_l2_degrees(Z, a)
+% [W, stat] = gsp_learn_graph_l2_degrees(Z, a, params)
+%
+% Inputs:
+% Z : Matrix with (squared) pairwise distances of nodes
+% a : L||_F^2 prior constant (bigger a -> more dense W)
+% params : Optional parameters
+%
+% Outputs:
+% W : Weighted adjacency matrix
+% stat : Optional output statistics (adds small overhead)
+%
+% 'W = gsp_learn_graph_l2_degrees(Z, a, params)' computes a weighted
+% adjacency matrix W from squared pairwise distances in Z, using the
+% smoothness assumption that text{trace}(X^TLX) is small, where X is
+% the data (columns) changing smoothly from node to node on the graph and
+% L = D-W is the combinatorial graph Laplacian.
+%
+% Alternatively, Z can contain other types of distances and use the
+% smoothness assumption that
+%
+% sum(sum(W .* Z))
+%
+% is small.
+%
+% The minimization problem solved is
+%
+% minimize_W sum(sum(W .* Z)) + a/2 * ||W||_F^2/2
+% + a/2 * ||sum(W)||_2^2
+% s.t. sum(sum(W)) == n
+%
+% subject to W being a valid weighted adjacency matrix (non-negative,
+% symmetric, with zero diagonal). Note that
+%
+% .||W||_F^2/2 + ||sum(W)||_2^2 = ||L||^2
+%
+% The algorithm used is forward-backward-forward (FBF) based primal dual
+% optimization (see references).
+%
+% Example:
+%
+% G = gsp_sensor(256);
+% f1 = @(x,y) sin((2-x-y).^2);
+% f2 = @(x,y) cos((x+y).^2);
+% f3 = @(x,y) (x-.5).^2 + (y-.5).^3 + x - y;
+% f4 = @(x,y) sin(3*((x-.5).^2+(y-.5).^2));
+% X = [f1(G.coords(:,1), G.coords(:,2)), f2(G.coords(:,1), G.coords(:,2)), f3(G.coords(:,1), G.coords(:,2)), f4(G.coords(:,1), G.coords(:,2))];
+% figure; subplot(2,2,1); gsp_plot_signal(G, X(:,1)); title('1st smooth signal');
+% subplot(2,2,2); gsp_plot_signal(G, X(:,2)); title('2nd smooth signal');
+% subplot(2,2,3); gsp_plot_signal(G, X(:,3)); title('3rd smooth signal');
+% subplot(2,2,4); gsp_plot_signal(G, X(:,4)); title('4th smooth signal');
+% Z = gsp_distanz(X').^2;
+% [W] = gsp_learn_graph_l2_degrees(Z*25, 1);
+% W(W<1e-5) = 0;
+% G2 = gsp_update_weights(G, W);
+% figure; gsp_plot_graph(G2); title('Graph with edges learned from above 4 signals');
+%
+%
+% Additional parameters
+% ---------------------
+%
+% params.W_init : Initialization point. default: zeros(size(Z))
+% verbosity : Above 1 adds a small overhead. Default: 1
+% maxit : Maximum number of iterations. Default: 1000
+% tol : Tolerance for stopping criterion. Default: 1e-5
+% step_size : Step size from the interval (0,1). Default: 0.5
+%
+% The stopping criterion is whether both relative primal and dual
+% distance between two iterations are below a given tolerance.
+%
+% To set the step size use the following rule of thumb: Set it so that
+% relative change of primal and dual converge with similar rates (use
+% verbosity > 1).
+%
+%
+% See also: gsp_learn_graph_log_degrees gsp_distanz gsp_update_weights
+%
+% References:
+% V. Kalofolias. How to learn a graph from smooth signals. Technical
+% report, AISTATS 2016: proceedings at Journal of Machine Learning
+% Research (JMLR)., 2016.
+%
+% N. Komodakis and J.-C. Pesquet. Playing with duality: An overview of
+% recent primal? dual approaches for solving large-scale optimization
+% problems. Signal Processing Magazine, IEEE, 32(6):31--54, 2015.
+%
+%
+%
+% Url: http://lts2research.epfl.ch/gsp/doc/learn_graph/gsp_learn_graph_l2_degrees.php
+
+% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
+% This file is part of GSPbox version 0.5.2
+%
+% This program is free software: you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation, either version 3 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program. If not, see .
+
+% If you use this toolbox please kindly cite
+% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
+% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
+% ArXiv e-prints, Aug. 2014.
+% http://arxiv.org/abs/1408.5781
+
+% Author: Vassilis Kalofolias
+% Testing: gsp_test_learn_graph
+% Date: June 2015
+
+
+%% Default parameters
+if nargin < 3
+ params = struct;
+end
+
+if not(isfield(params, 'verbosity')), params.verbosity = 1; end
+if not(isfield(params, 'maxit')), params.maxit = 1000; end
+if not(isfield(params, 'tol')), params.tol = 1e-5; end
+if not(isfield(params, 'step_size')), params.step_size = .5; end % from (0, 1)
+
+
+%% Fix parameter size and initialize
+z = squareform(Z);
+z = full(z(:));
+l = length(z); % number of edges
+% n(n-1)/2 = l => n = (1 + sqrt(1+8*l))/ 2
+n = round((1 + sqrt(1+8*l))/ 2); % number of nodes
+
+if isfield(params, 'W_init')
+ w = squareform(params.W_init)';
+else
+ % w_0 = exp(-6*dx2/mean(dx2));
+ w = zeros(size(z));
+end
+
+%% Needed operators
+
+% needed for gradient of h(w)
+% L*w = sum(W)
+[S, St] = sum_squareform(n);
+
+% ones_l = ones(l,1);
+
+sum_op = @(w) S*w;
+sum_t_op = @(z) St*z;
+% edges -> scalar
+K_op = @(w) 2*sum(w); % sum(sum(W)) = 2 * sum(w)
+% scalar -> edges
+% Kt_op = @(z) 2 * z * ones_l;
+norm_K = 2 * sqrt(l);
+%norm_L = l; % do i need the square norm or the square root?
+
+%% TODO: Rescaling??
+
+%% Learn the graph
+% min_{W>=0} tr(X'*L*X) - gc * sum(log(sum(W))) + gp * norm(W-W0,'fro')^2, where L = diag(sum(W))-W
+% min_W I{W>=0} + W(:)'*Dx(:) - gc * sum(log(sum(W))) + gp * norm(W-W0,'fro')^2
+% min_W f(W) + g(L_op(W)) + h(W)
+
+% put proximal of trace plus positivity together
+f.eval = @(w) w'*z; % half should be counted
+%f.eval = @(W) 0;
+f.prox = @(w, c) max(0, w - c*z); % all change the same
+
+% projection of sum of W on n
+% g(w) = IND(sum(w) == n)
+g.eval = @(z) 1000 * abs(z-n); % this could be 0. Measures violation of the condition sum(w) = n!!
+g.prox = @(z, c) n;
+% proximal of conjugate of g: z - c*g.prox(z/c, 1/c)
+g_star_prox = @(z, c) z - c*n;
+
+% the following is the squared frobenius norm of the graph Laplacian
+h.eval = @(w) a * (2*norm(w)^2 + norm(sum_op(w))^2); % CAREFUL: w two times!
+h.grad = @(w) 2 * a * (2*w + sum_t_op(sum_op(w)));
+h.beta = 2 * a * (n+1); % = norm(ones(n)+eye(n))
+
+% if there is no quadratic term, it reduces to a linear program:
+if a == 0
+ % X = linprog(f, A, b, Aeq, beq,LB,UB,X0)
+ [w, stat.fval, stat.exitflag, stat.output, stat.lambda] = linprog(z, [], [], ones(size(z))', 100*n, zeros(size(z)));
+else
+ %% My custom FBF based primal dual (see [Komodakis, Pesquet])
+ % parameters mu, epsilon for convergence (see [1])
+ mu = h.beta + norm_K; %TODO: is it squared or not??
+ epsilon = lin_map(0.0, [0, 1/(1+mu)], [0,1]); % in (0, 1/(1+mu) )
+
+ % INITIALIZATION
+ % primal variable ALREADY INITIALIZED
+ %w = params.w_init;
+ % dual variable
+ v_n = K_op(w);
+ if nargout > 1 || params.verbosity > 1
+ stat.f_eval = nan(params.maxit, 1);
+ stat.g_eval = nan(params.maxit, 1);
+ stat.h_eval = nan(params.maxit, 1);
+ stat.fgh_eval = nan(params.maxit, 1);
+ stat.pos_violation = nan(params.maxit, 1);
+ end
+ if params.verbosity > 1
+ fprintf('Relative change of primal, dual variables, and objective fun\n');
+ end
+ tic
+ gn = lin_map(params.step_size, [epsilon, (1-epsilon)/mu], [0,1]); % in [epsilon, (1-epsilon)/mu]
+ for i = 1:params.maxit
+ %Y_n = w - gn * (h.grad(w) + Kt_op(v_n));
+ Y_n = w - gn * (h.grad(w) + v_n);
+ y_n = v_n + gn * (K_op(w));
+ P_n = f.prox(Y_n, gn);
+ p_n = g_star_prox(y_n, gn); % = y_n - gn*g_prox(y_n/gn, 1/gn)
+ %Q_n = P_n - gn * (h.grad(P_n) + Kt_op(p_n));
+ Q_n = P_n - gn * (h.grad(P_n) + p_n);
+ q_n = p_n + gn * (K_op(P_n));
+
+ if nargout > 1 || params.verbosity > 2
+ stat.f_eval(i) = f.eval(w);
+ stat.g_eval(i) = g.eval(K_op(w));
+ stat.h_eval(i) = h.eval(w);
+ stat.fgh_eval(i) = stat.f_eval(i) + stat.g_eval(i) + stat.h_eval(i);
+ stat.pos_violation(i) = -sum(min(0,w));
+ end
+ rel_norm_primal = norm(- Y_n + Q_n, 'fro')/norm(w, 'fro');
+ rel_norm_dual = norm(- y_n + q_n)/norm(v_n);
+
+ if params.verbosity > 2
+ fprintf('iter %3d: %6.4e %6.4e %6.3e %6.3e %6.3e \n', i, rel_norm_primal, rel_norm_dual, stat.fgh_eval(i), full(sum(w)*2), stat.h_eval(i));
+ elseif params.verbosity > 1
+ fprintf('iter %3d: %6.4e %6.4e\n', i, rel_norm_primal, rel_norm_dual);
+ end
+
+ w = w - Y_n + Q_n;
+ v_n = v_n - y_n + q_n;
+
+ if rel_norm_primal < params.tol && rel_norm_dual < params.tol
+ break
+ end
+ end
+ stat.time = toc;
+ if params.verbosity > 0
+ fprintf('# iters: %3d. Rel primal: %6.4e Rel dual: %6.4e %6.3e\n', i, rel_norm_primal, rel_norm_dual, f.eval(w) + g.eval(K_op(w)) + h.eval(w));
+ fprintf('Time needed is %f seconds\n', stat.time);
+ end
+
+ % Use the following for testing:
+ % g.L = K_op;
+ % g.Lt = Kt_op;
+ % g.norm_L = norm_K;
+ % [w, info] = fbf_primal_dual(w, f, g, h, params);
+ %[w, info] = fb_based_primal_dual(w, f, g, h, params);
+ %%
+
+ if params.verbosity > 3
+ figure; plot(real([stat.f_eval, stat.g_eval, stat.h_eval])); hold all; plot(real(stat.fgh_eval), '.'); legend('f = w''*dx2', 'g = 1000 * abs(2sum(w)-n)', 'h = a*norm(L)^2', 'f+g+h');
+ figure; plot(stat.pos_violation); title('sum of negative (invalid) values per iteration')
+ figure; semilogy(max(0,-diff(real(stat.fgh_eval'))),'b.-'); hold on; semilogy(max(0,diff(real(stat.fgh_eval'))),'ro-'); title('|f(i)-f(i-1)|'); legend('going down','going up');
+ end
+end
+
+W = squareform(w);
+
+
diff --git a/learn_graph/gsp_learn_graph_log_degrees.m b/learn_graph/gsp_learn_graph_log_degrees.m
new file mode 100644
index 0000000..be7872d
--- /dev/null
+++ b/learn_graph/gsp_learn_graph_log_degrees.m
@@ -0,0 +1,274 @@
+function [W, stat] = gsp_learn_graph_log_degrees(Z, a, b, params)
+%GSP_LEARN_GRAPH_LOG_DEGREES Learn graph from pairwise distances using negative log prior on nodes degrees
+% Usage: [W, stat] = gsp_learn_graph_log_degrees(Z, a, b)
+% [W, stat] = gsp_learn_graph_log_degrees(Z, a, b, params)
+%
+% Inputs:
+% Z : Matrix with (squared) pairwise distances of nodes
+% a : Log prior constant (bigger a -> bigger weights in W)
+% b : W||_F^2 prior constant (bigger b -> more dense W)
+% params : Optional parameters
+%
+% Outputs:
+% W : Weighted adjacency matrix
+% stat : Optional output statistics (adds small overhead)
+%
+%
+% 'W = gsp_learn_graph_log_degrees(Z, a, b, params)' computes a weighted
+% adjacency matrix W from squared pairwise distances in Z, using the
+% smoothness assumption that text{trace}(X^TLX) is small, where X is
+% the data (columns) changing smoothly from node to node on the graph and
+% L = D-W is the combinatorial graph Laplacian. See the paper of the
+% references for the theory behind the algorithm.
+%
+% Alternatively, Z can contain other types of distances and use the
+% smoothness assumption that
+%
+% sum(sum(W .* Z))
+%
+% is small.
+%
+% The minimization problem solved is
+%
+% minimize_W sum(sum(W .* Z)) - a * sum(log(sum(W))) + b * ||W||_F^2/2
+%
+% subject to W being a valid weighted adjacency matrix (non-negative,
+% symmetric, with zero diagonal).
+%
+% The algorithm used is forward-backward-forward (FBF) based primal dual
+% optimization (see references).
+%
+% Example:
+%
+% G = gsp_sensor(256);
+% f1 = @(x,y) sin((2-x-y).^2);
+% f2 = @(x,y) cos((x+y).^2);
+% f3 = @(x,y) (x-.5).^2 + (y-.5).^3 + x - y;
+% f4 = @(x,y) sin(3*((x-.5).^2+(y-.5).^2));
+% X = [f1(G.coords(:,1), G.coords(:,2)), f2(G.coords(:,1), G.coords(:,2)), f3(G.coords(:,1), G.coords(:,2)), f4(G.coords(:,1), G.coords(:,2))];
+% figure; subplot(2,2,1); gsp_plot_signal(G, X(:,1)); title('1st smooth signal');
+% subplot(2,2,2); gsp_plot_signal(G, X(:,2)); title('2nd smooth signal');
+% subplot(2,2,3); gsp_plot_signal(G, X(:,3)); title('3rd smooth signal');
+% subplot(2,2,4); gsp_plot_signal(G, X(:,4)); title('4th smooth signal');
+% Z = gsp_distanz(X').^2;
+% W = gsp_learn_graph_log_degrees(Z*25, 1, 1);
+% W(W < 1e-5) = 0;
+% G2 = gsp_update_weights(G, W);
+% figure; gsp_plot_graph(G2); title('Graph with edges learned from above 4 signals');
+%
+%
+% Additional parameters
+% ---------------------
+%
+% params.W_init : Initialization point. default: zeros(size(Z))
+% verbosity : Default = 1. Above 1 adds a small overhead
+% maxit : Maximum number of iterations. Default: 1000
+% tol : Tolerance for stopping criterion. Defaul: 1e-5
+% step_size : Step size from the interval (0,1). Default: 0.5
+%
+% The function is using the UNLocBoX functions sum_squareform and
+% squareform_sp.
+% The stopping criterion is whether both relative primal and dual
+% distance between two iterations are below a given tolerance.
+%
+% To set the step size use the following rule of thumb: Set it so that
+% relative change of primal and dual converge with similar rates (use
+% verbosity > 1).
+%
+% See also: gsp_learn_graph_l2_degrees gsp_distanz gsp_update_weights
+%
+% References:
+% V. Kalofolias. How to learn a graph from smooth signals. Technical
+% report, AISTATS 2016: proceedings at Journal of Machine Learning
+% Research (JMLR)., 2016.
+%
+% N. Komodakis and J.-C. Pesquet. Playing with duality: An overview of
+% recent primal? dual approaches for solving large-scale optimization
+% problems. Signal Processing Magazine, IEEE, 32(6):31--54, 2015.
+%
+%
+%
+% Url: http://lts2research.epfl.ch/gsp/doc/learn_graph/gsp_learn_graph_log_degrees.php
+
+% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
+% This file is part of GSPbox version 0.5.2
+%
+% This program is free software: you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation, either version 3 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program. If not, see .
+
+% If you use this toolbox please kindly cite
+% N. Perraudin, J. Paratte, D. Shuman, V. Kalofolias, P. Vandergheynst,
+% and D. K. Hammond. GSPBOX: A toolbox for signal processing on graphs.
+% ArXiv e-prints, Aug. 2014.
+% http://arxiv.org/abs/1408.5781
+
+% Author: Vassilis Kalofolias
+% Testing: gsp_test_learn_graph
+% Date: June 2015
+
+
+
+
+
+
+
+%% Default parameters
+if nargin < 4
+ params = struct;
+end
+
+if not(isfield(params, 'verbosity')), params.verbosity = 1; end
+if not(isfield(params, 'maxit')), params.maxit = 1000; end
+if not(isfield(params, 'tol')), params.tol = 1e-5; end
+if not(isfield(params, 'step_size')), params.step_size = .5; end % from (0, 1)
+
+
+%% Fix parameter size and initialize
+z = squareform(Z);
+z = full(z(:));
+l = length(z); % number of edges
+% n(n-1)/2 = l => n = (1 + sqrt(1+8*l))/ 2
+n = round((1 + sqrt(1+8*l))/ 2); % number of nodes
+
+if isfield(params, 'W_init')
+ w = squareform(params.W_init)';
+else
+ % w_0 = exp(-6*dx2/mean(dx2));
+ w = zeros(size(z));
+end
+
+w_0 = 0;
+
+%% Needed operators
+
+% L*w = sum(W)
+[S, St] = sum_squareform(n);
+
+% L: edges -> nodes
+K_op = @(w) S*w;
+
+% L': nodes -> edges
+Kt_op = @(z) St*z;
+
+% the next is an upper bound if params.fix_zeros
+norm_K = sqrt(2*(n-1));
+
+
+%% TODO: Rescaling??
+% we want h.beta == norm_K (see definition of mu)
+% we can multiply all terms by s = norm_K/2*b so new h.beta==2*b*s==norm_K
+
+
+%% Learn the graph
+% min_{W>=0} tr(X'*L*X) - gc * sum(log(sum(W))) + gp * norm(W-W0,'fro')^2, where L = diag(sum(W))-W
+% min_W I{W>=0} + W(:)'*Dx(:) - gc * sum(log(sum(W))) + gp * norm(W-W0,'fro')^2
+% min_W f(W) + g(L_op(W)) + h(W)
+
+% put proximal of trace plus positivity together
+f.eval = @(w) w'*z; % half should be counted
+%f.eval = @(W) 0;
+f.prox = @(w, c) max(0, w - c*z); % all change the same
+
+param_prox_log.verbose = params.verbosity - 3;
+g.eval = @(z) -a * sum(log(z));
+g.prox = @(z, c) prox_sum_log(z, c*a, param_prox_log);
+% proximal of conjugate of g: z-c*g.prox(z/c, 1/c)
+g_star_prox = @(z, c) z - c*a * prox_sum_log(z/(c*a), 1/(c*a), param_prox_log);
+
+h.eval = @(w) b * norm(w - w_0,'fro')^2;
+h.grad = @(w) 2 * b * (w - w_0);
+h.beta = 2 * b;
+
+
+%% My custom FBF based primal dual (see [1] = [Komodakis, Pesquet])
+% parameters mu, epsilon for convergence (see [1])
+mu = h.beta + norm_K; %TODO: is it squared or not??
+epsilon = lin_map(0.0, [0, 1/(1+mu)], [0,1]); % in (0, 1/(1+mu) )
+
+% INITIALIZATION
+% primal variable ALREADY INITIALIZED
+%w = params.w_init;
+% dual variable
+v_n = K_op(w);
+if nargout > 1 || params.verbosity > 1
+ stat.f_eval = nan(params.maxit, 1);
+ stat.g_eval = nan(params.maxit, 1);
+ stat.h_eval = nan(params.maxit, 1);
+ stat.fgh_eval = nan(params.maxit, 1);
+ stat.pos_violation = nan(params.maxit, 1);
+end
+if params.verbosity > 1
+ fprintf('Relative change of primal, dual variables, and objective fun\n');
+end
+
+tic
+gn = lin_map(params.step_size, [epsilon, (1-epsilon)/mu], [0,1]); % in [epsilon, (1-epsilon)/mu]
+for i = 1:params.maxit
+ Y_n = w - gn * (h.grad(w) + Kt_op(v_n));
+ y_n = v_n + gn * (K_op(w));
+ P_n = f.prox(Y_n, gn);
+ p_n = g_star_prox(y_n, gn); % = y_n - gn*g_prox(y_n/gn, 1/gn)
+ Q_n = P_n - gn * (h.grad(P_n) + Kt_op(p_n));
+ q_n = p_n + gn * (K_op(P_n));
+
+ if nargout > 1 || params.verbosity > 2
+ stat.f_eval(i) = f.eval(w);
+ stat.g_eval(i) = g.eval(K_op(w));
+ stat.h_eval(i) = h.eval(w);
+ stat.fgh_eval(i) = stat.f_eval(i) + stat.g_eval(i) + stat.h_eval(i);
+ stat.pos_violation(i) = -sum(min(0,w));
+ end
+ rel_norm_primal = norm(- Y_n + Q_n, 'fro')/norm(w, 'fro');
+ rel_norm_dual = norm(- y_n + q_n)/norm(v_n);
+
+ if params.verbosity > 3
+ fprintf('iter %4d: %6.4e %6.4e %6.3e', i, rel_norm_primal, rel_norm_dual, stat.fgh_eval(i));
+ elseif params.verbosity > 2
+ fprintf('iter %4d: %6.4e %6.4e %6.3e\n', i, rel_norm_primal, rel_norm_dual, stat.fgh_eval(i));
+ elseif params.verbosity > 1
+ fprintf('iter %4d: %6.4e %6.4e\n', i, rel_norm_primal, rel_norm_dual);
+ end
+
+ w = w - Y_n + Q_n;
+ v_n = v_n - y_n + q_n;
+
+ if rel_norm_primal < params.tol && rel_norm_dual < params.tol
+ break
+ end
+end
+stat.time = toc;
+if params.verbosity > 0
+ fprintf('# iters: %4d. Rel primal: %6.4e Rel dual: %6.4e OBJ %6.3e\n', i, rel_norm_primal, rel_norm_dual, f.eval(w) + g.eval(K_op(w)) + h.eval(w));
+ fprintf('Time needed is %f seconds\n', stat.time);
+end
+
+% use the following for testing:
+% g.L = K_op;
+% g.Lt = Kt_op;
+% g.norm_L = norm_K;
+% [w, info] = fbf_primal_dual(w, f, g, h, params);
+% %[w, info] = fb_based_primal_dual(w, f, g, h, params);
+
+
+%%
+
+if params.verbosity > 3
+ figure; plot(real([stat.f_eval, stat.g_eval, stat.h_eval])); hold all; plot(real(stat.fgh_eval), '.'); legend('f', 'g', 'h', 'f+g+h');
+ figure; plot(stat.pos_violation); title('sum of negative (invalid) values per iteration')
+ figure; semilogy(max(0,-diff(real(stat.fgh_eval'))),'b.-'); hold on; semilogy(max(0,diff(real(stat.fgh_eval'))),'ro-'); title('|f(i)-f(i-1)|'); legend('going down','going up');
+end
+
+W = squareform(w);
+
+
+
diff --git a/operators/Contents.m b/operators/Contents.m
index c7d6073..46f03c4 100644
--- a/operators/Contents.m
+++ b/operators/Contents.m
@@ -34,7 +34,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/operators/Contents.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/operators/gsp_div.m b/operators/gsp_div.m
index cd4b086..86155cd 100644
--- a/operators/gsp_div.m
+++ b/operators/gsp_div.m
@@ -24,7 +24,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/operators/gsp_div.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/operators/gsp_gft.m b/operators/gsp_gft.m
index 89dd043..35d0952 100644
--- a/operators/gsp_gft.m
+++ b/operators/gsp_gft.m
@@ -33,7 +33,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/operators/gsp_gft.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/operators/gsp_grad.m b/operators/gsp_grad.m
index 46c3f1e..1e8b8ef 100644
--- a/operators/gsp_grad.m
+++ b/operators/gsp_grad.m
@@ -23,7 +23,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/operators/gsp_grad.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/operators/gsp_grad_mat.m b/operators/gsp_grad_mat.m
index 2cd006c..b2f879e 100644
--- a/operators/gsp_grad_mat.m
+++ b/operators/gsp_grad_mat.m
@@ -26,7 +26,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/operators/gsp_grad_mat.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/operators/gsp_graph_multiresolution.m b/operators/gsp_graph_multiresolution.m
index ecfe957..d7788bb 100644
--- a/operators/gsp_graph_multiresolution.m
+++ b/operators/gsp_graph_multiresolution.m
@@ -62,7 +62,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/operators/gsp_graph_multiresolution.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/operators/gsp_gwft.m b/operators/gsp_gwft.m
index db06086..cf1e3cf 100644
--- a/operators/gsp_gwft.m
+++ b/operators/gsp_gwft.m
@@ -25,7 +25,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/operators/gsp_gwft.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/operators/gsp_gwft_frame_matrix.m b/operators/gsp_gwft_frame_matrix.m
index 4f600b2..fbfdf60 100644
--- a/operators/gsp_gwft_frame_matrix.m
+++ b/operators/gsp_gwft_frame_matrix.m
@@ -21,7 +21,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/operators/gsp_gwft_frame_matrix.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/operators/gsp_igft.m b/operators/gsp_igft.m
index 97b124d..96fa24d 100644
--- a/operators/gsp_igft.m
+++ b/operators/gsp_igft.m
@@ -35,7 +35,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/operators/gsp_igft.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/operators/gsp_interpolate.m b/operators/gsp_interpolate.m
index 72eaf64..e49fc89 100644
--- a/operators/gsp_interpolate.m
+++ b/operators/gsp_interpolate.m
@@ -39,7 +39,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/operators/gsp_interpolate.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/operators/gsp_kron_reduce.m b/operators/gsp_kron_reduce.m
index 9b719d9..c1a98dc 100644
--- a/operators/gsp_kron_reduce.m
+++ b/operators/gsp_kron_reduce.m
@@ -47,7 +47,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/operators/gsp_kron_reduce.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/operators/gsp_kron_reduction.m b/operators/gsp_kron_reduction.m
index 0360dcb..0c7b971 100644
--- a/operators/gsp_kron_reduction.m
+++ b/operators/gsp_kron_reduction.m
@@ -4,7 +4,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/operators/gsp_kron_reduction.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/operators/gsp_localize.m b/operators/gsp_localize.m
index 91e88a4..6dfab2f 100644
--- a/operators/gsp_localize.m
+++ b/operators/gsp_localize.m
@@ -17,7 +17,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/operators/gsp_localize.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/operators/gsp_modulate.m b/operators/gsp_modulate.m
index 12e9c95..96adc5c 100644
--- a/operators/gsp_modulate.m
+++ b/operators/gsp_modulate.m
@@ -16,7 +16,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/operators/gsp_modulate.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/operators/gsp_ngwft.m b/operators/gsp_ngwft.m
index bd56666..ee49a82 100644
--- a/operators/gsp_ngwft.m
+++ b/operators/gsp_ngwft.m
@@ -25,7 +25,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/operators/gsp_ngwft.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/operators/gsp_ngwft_frame_matrix.m b/operators/gsp_ngwft_frame_matrix.m
index fa31845..59a3267 100644
--- a/operators/gsp_ngwft_frame_matrix.m
+++ b/operators/gsp_ngwft_frame_matrix.m
@@ -21,7 +21,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/operators/gsp_ngwft_frame_matrix.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/operators/gsp_pyramid_analysis.m b/operators/gsp_pyramid_analysis.m
index b1327c9..d8da27d 100644
--- a/operators/gsp_pyramid_analysis.m
+++ b/operators/gsp_pyramid_analysis.m
@@ -40,7 +40,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/operators/gsp_pyramid_analysis.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/operators/gsp_pyramid_analysis_single.m b/operators/gsp_pyramid_analysis_single.m
index bb97e1f..13b4cfe 100644
--- a/operators/gsp_pyramid_analysis_single.m
+++ b/operators/gsp_pyramid_analysis_single.m
@@ -34,7 +34,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/operators/gsp_pyramid_analysis_single.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/operators/gsp_pyramid_cell2coeff.m b/operators/gsp_pyramid_cell2coeff.m
index fee9aa0..85e7fdf 100644
--- a/operators/gsp_pyramid_cell2coeff.m
+++ b/operators/gsp_pyramid_cell2coeff.m
@@ -26,7 +26,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/operators/gsp_pyramid_cell2coeff.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/operators/gsp_pyramid_synthesis.m b/operators/gsp_pyramid_synthesis.m
index 6dcbe8e..7800be8 100644
--- a/operators/gsp_pyramid_synthesis.m
+++ b/operators/gsp_pyramid_synthesis.m
@@ -50,7 +50,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/operators/gsp_pyramid_synthesis.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/operators/gsp_pyramid_synthesis_single.m b/operators/gsp_pyramid_synthesis_single.m
index 5b628df..ba33e98 100644
--- a/operators/gsp_pyramid_synthesis_single.m
+++ b/operators/gsp_pyramid_synthesis_single.m
@@ -46,7 +46,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/operators/gsp_pyramid_synthesis_single.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/operators/gsp_translate.m b/operators/gsp_translate.m
index 85b48cc..47786ed 100644
--- a/operators/gsp_translate.m
+++ b/operators/gsp_translate.m
@@ -16,7 +16,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/operators/gsp_translate.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/plotting/Contents.m b/plotting/Contents.m
index 10b49d1..55b11e8 100644
--- a/plotting/Contents.m
+++ b/plotting/Contents.m
@@ -16,7 +16,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/plotting/Contents.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/plotting/gsp_plot_edges.m b/plotting/gsp_plot_edges.m
index ad57926..5081624 100644
--- a/plotting/gsp_plot_edges.m
+++ b/plotting/gsp_plot_edges.m
@@ -46,7 +46,7 @@ function gsp_plot_edges(G,param)
% Url: http://lts2research.epfl.ch/gsp/doc/plotting/gsp_plot_edges.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/plotting/gsp_plot_filter.m b/plotting/gsp_plot_filter.m
index 8de3185..2261dde 100644
--- a/plotting/gsp_plot_filter.m
+++ b/plotting/gsp_plot_filter.m
@@ -54,7 +54,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/plotting/gsp_plot_filter.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/plotting/gsp_plot_graph.m b/plotting/gsp_plot_graph.m
index 5582f0d..ecdfdda 100644
--- a/plotting/gsp_plot_graph.m
+++ b/plotting/gsp_plot_graph.m
@@ -33,7 +33,7 @@ function gsp_plot_graph(G,param)
% Url: http://lts2research.epfl.ch/gsp/doc/plotting/gsp_plot_graph.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/plotting/gsp_plot_sgram.m b/plotting/gsp_plot_sgram.m
index d0ecb0a..6908c71 100644
--- a/plotting/gsp_plot_sgram.m
+++ b/plotting/gsp_plot_sgram.m
@@ -32,7 +32,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/plotting/gsp_plot_sgram.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/plotting/gsp_plot_signal.m b/plotting/gsp_plot_signal.m
index ab448d1..a53ce1c 100644
--- a/plotting/gsp_plot_signal.m
+++ b/plotting/gsp_plot_signal.m
@@ -41,7 +41,7 @@ function gsp_plot_signal(G,signal,param)
% Url: http://lts2research.epfl.ch/gsp/doc/plotting/gsp_plot_signal.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/plotting/gsp_plot_signal_spectral.m b/plotting/gsp_plot_signal_spectral.m
index 84580ea..7560d6b 100644
--- a/plotting/gsp_plot_signal_spectral.m
+++ b/plotting/gsp_plot_signal_spectral.m
@@ -39,7 +39,7 @@ function gsp_plot_signal_spectral(G,f_hat,param)
% Url: http://lts2research.epfl.ch/gsp/doc/plotting/gsp_plot_signal_spectral.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/pointsclouds/Contents.m b/pointsclouds/Contents.m
index b20083c..7f4b824 100644
--- a/pointsclouds/Contents.m
+++ b/pointsclouds/Contents.m
@@ -13,7 +13,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/pointsclouds/Contents.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/pointsclouds/gsp_pointcloud.m b/pointsclouds/gsp_pointcloud.m
index 2839dcc..4cf8a24 100644
--- a/pointsclouds/gsp_pointcloud.m
+++ b/pointsclouds/gsp_pointcloud.m
@@ -30,7 +30,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/pointsclouds/gsp_pointcloud.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/pointsclouds/gsp_twospirals.m b/pointsclouds/gsp_twospirals.m
index deb9062..ac55a7e 100644
--- a/pointsclouds/gsp_twospirals.m
+++ b/pointsclouds/gsp_twospirals.m
@@ -38,7 +38,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/pointsclouds/gsp_twospirals.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/pointsclouds/to_be_included/clusterincluster.m b/pointsclouds/to_be_included/clusterincluster.m
index e1a7819..3743704 100644
--- a/pointsclouds/to_be_included/clusterincluster.m
+++ b/pointsclouds/to_be_included/clusterincluster.m
@@ -44,7 +44,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/pointsclouds/to_be_included/clusterincluster.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/pointsclouds/to_be_included/corners.m b/pointsclouds/to_be_included/corners.m
index 57cf6e8..3fedf64 100644
--- a/pointsclouds/to_be_included/corners.m
+++ b/pointsclouds/to_be_included/corners.m
@@ -37,7 +37,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/pointsclouds/to_be_included/corners.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/pointsclouds/to_be_included/crescentfullmoon.m b/pointsclouds/to_be_included/crescentfullmoon.m
index 8395962..b436eea 100644
--- a/pointsclouds/to_be_included/crescentfullmoon.m
+++ b/pointsclouds/to_be_included/crescentfullmoon.m
@@ -33,7 +33,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/pointsclouds/to_be_included/crescentfullmoon.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/pointsclouds/to_be_included/datasetsdemo.m b/pointsclouds/to_be_included/datasetsdemo.m
index d08495b..b272ba6 100644
--- a/pointsclouds/to_be_included/datasetsdemo.m
+++ b/pointsclouds/to_be_included/datasetsdemo.m
@@ -4,7 +4,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/pointsclouds/to_be_included/datasetsdemo.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/pointsclouds/to_be_included/halfkernel.m b/pointsclouds/to_be_included/halfkernel.m
index 2e60659..a2a5008 100644
--- a/pointsclouds/to_be_included/halfkernel.m
+++ b/pointsclouds/to_be_included/halfkernel.m
@@ -34,7 +34,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/pointsclouds/to_be_included/halfkernel.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/pointsclouds/to_be_included/outlier.m b/pointsclouds/to_be_included/outlier.m
index 25be92c..e38e499 100644
--- a/pointsclouds/to_be_included/outlier.m
+++ b/pointsclouds/to_be_included/outlier.m
@@ -40,7 +40,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/pointsclouds/to_be_included/outlier.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/pointsclouds/to_be_included/twospirals.m b/pointsclouds/to_be_included/twospirals.m
index 9d7a2d6..e09fc94 100644
--- a/pointsclouds/to_be_included/twospirals.m
+++ b/pointsclouds/to_be_included/twospirals.m
@@ -8,7 +8,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/pointsclouds/to_be_included/twospirals.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/prox/Contents.m b/prox/Contents.m
index 957c71b..85fb9c6 100644
--- a/prox/Contents.m
+++ b/prox/Contents.m
@@ -23,7 +23,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/prox/Contents.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/prox/gsp_proj_b2_filterbank.m b/prox/gsp_proj_b2_filterbank.m
index f24a0f9..07ad982 100644
--- a/prox/gsp_proj_b2_filterbank.m
+++ b/prox/gsp_proj_b2_filterbank.m
@@ -83,7 +83,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/prox/gsp_proj_b2_filterbank.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/prox/gsp_proj_filterbank.m b/prox/gsp_proj_filterbank.m
index c74c8b4..b95c847 100644
--- a/prox/gsp_proj_filterbank.m
+++ b/prox/gsp_proj_filterbank.m
@@ -42,7 +42,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/prox/gsp_proj_filterbank.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/prox/gsp_prox_l1_filterbank.m b/prox/gsp_prox_l1_filterbank.m
index 93be524..678cc3a 100644
--- a/prox/gsp_prox_l1_filterbank.m
+++ b/prox/gsp_prox_l1_filterbank.m
@@ -61,7 +61,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/prox/gsp_prox_l1_filterbank.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/prox/gsp_prox_l2_filterbank.m b/prox/gsp_prox_l2_filterbank.m
index 6c13f29..6180ea9 100644
--- a/prox/gsp_prox_l2_filterbank.m
+++ b/prox/gsp_prox_l2_filterbank.m
@@ -71,7 +71,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/prox/gsp_prox_l2_filterbank.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/prox/gsp_prox_tik.m b/prox/gsp_prox_tik.m
index 5cc586c..6395348 100644
--- a/prox/gsp_prox_tik.m
+++ b/prox/gsp_prox_tik.m
@@ -73,7 +73,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/prox/gsp_prox_tik.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/prox/gsp_prox_tv.m b/prox/gsp_prox_tv.m
index d4c41c8..c46dba1 100644
--- a/prox/gsp_prox_tv.m
+++ b/prox/gsp_prox_tv.m
@@ -72,7 +72,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/prox/gsp_prox_tv.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/prox/gsp_solve_l0.m b/prox/gsp_solve_l0.m
index e7ca57b..ac6d12b 100644
--- a/prox/gsp_solve_l0.m
+++ b/prox/gsp_solve_l0.m
@@ -30,7 +30,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/prox/gsp_solve_l0.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/prox/gsp_solve_l1.m b/prox/gsp_solve_l1.m
index a5add7e..5b98021 100644
--- a/prox/gsp_solve_l1.m
+++ b/prox/gsp_solve_l1.m
@@ -33,7 +33,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/prox/gsp_solve_l1.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/prox/gsp_wavelet_dn.m b/prox/gsp_wavelet_dn.m
index 177fbf4..c6e4f1f 100644
--- a/prox/gsp_wavelet_dn.m
+++ b/prox/gsp_wavelet_dn.m
@@ -70,7 +70,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/prox/gsp_wavelet_dn.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/sgwt_require/create_synthetic_dataset.m b/sgwt_require/create_synthetic_dataset.m
index a7703e8..c4b5595 100644
--- a/sgwt_require/create_synthetic_dataset.m
+++ b/sgwt_require/create_synthetic_dataset.m
@@ -26,7 +26,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/sgwt_require/create_synthetic_dataset.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/sgwt_require/sgwt_cheby_square.m b/sgwt_require/sgwt_cheby_square.m
index 2c2d3d6..dfaa53d 100644
--- a/sgwt_require/sgwt_cheby_square.m
+++ b/sgwt_require/sgwt_cheby_square.m
@@ -12,7 +12,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/sgwt_require/sgwt_cheby_square.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/sgwt_require/sgwt_kernel_abspline3.m b/sgwt_require/sgwt_kernel_abspline3.m
index b570ceb..a8be64d 100644
--- a/sgwt_require/sgwt_kernel_abspline3.m
+++ b/sgwt_require/sgwt_kernel_abspline3.m
@@ -19,7 +19,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/sgwt_require/sgwt_kernel_abspline3.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/sgwt_require/sgwt_kernel_abspline5.m b/sgwt_require/sgwt_kernel_abspline5.m
index acd92ee..6b9ea8c 100644
--- a/sgwt_require/sgwt_kernel_abspline5.m
+++ b/sgwt_require/sgwt_kernel_abspline5.m
@@ -21,7 +21,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/sgwt_require/sgwt_kernel_abspline5.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/sgwt_require/sgwt_kernel_simple_tf.m b/sgwt_require/sgwt_kernel_simple_tf.m
index e7dcd1c..428006d 100644
--- a/sgwt_require/sgwt_kernel_simple_tf.m
+++ b/sgwt_require/sgwt_kernel_simple_tf.m
@@ -21,7 +21,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/sgwt_require/sgwt_kernel_simple_tf.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/Contents.m b/utils/Contents.m
index c4702be..c81ec30 100644
--- a/utils/Contents.m
+++ b/utils/Contents.m
@@ -48,7 +48,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/Contents.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_adj2vec.m b/utils/gsp_adj2vec.m
index d2bb628..44e654e 100644
--- a/utils/gsp_adj2vec.m
+++ b/utils/gsp_adj2vec.m
@@ -15,7 +15,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_adj2vec.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_cheby_coeff.m b/utils/gsp_cheby_coeff.m
index 676cfde..38b2825 100644
--- a/utils/gsp_cheby_coeff.m
+++ b/utils/gsp_cheby_coeff.m
@@ -36,7 +36,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_cheby_coeff.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_cheby_eval.m b/utils/gsp_cheby_eval.m
index 8027d66..8e3a068 100644
--- a/utils/gsp_cheby_eval.m
+++ b/utils/gsp_cheby_eval.m
@@ -14,7 +14,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_cheby_eval.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_cheby_op.m b/utils/gsp_cheby_op.m
index bdfb73d..631b525 100644
--- a/utils/gsp_cheby_op.m
+++ b/utils/gsp_cheby_op.m
@@ -72,7 +72,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_cheby_op.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_check_connectivity.m b/utils/gsp_check_connectivity.m
index aa5b19a..02d664d 100644
--- a/utils/gsp_check_connectivity.m
+++ b/utils/gsp_check_connectivity.m
@@ -26,7 +26,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_check_connectivity.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_check_connectivity_undirected.m b/utils/gsp_check_connectivity_undirected.m
index afa6dc3..6396810 100644
--- a/utils/gsp_check_connectivity_undirected.m
+++ b/utils/gsp_check_connectivity_undirected.m
@@ -25,7 +25,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_check_connectivity_undirected.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_check_weights.m b/utils/gsp_check_weights.m
index 8c8acff..87f905c 100644
--- a/utils/gsp_check_weights.m
+++ b/utils/gsp_check_weights.m
@@ -20,7 +20,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_check_weights.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_classic2graph_eig_order.m b/utils/gsp_classic2graph_eig_order.m
index ed03b6e..d1471df 100644
--- a/utils/gsp_classic2graph_eig_order.m
+++ b/utils/gsp_classic2graph_eig_order.m
@@ -15,7 +15,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_classic2graph_eig_order.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_compute_fourier_basis.m b/utils/gsp_compute_fourier_basis.m
index d62b2e3..22d78aa 100644
--- a/utils/gsp_compute_fourier_basis.m
+++ b/utils/gsp_compute_fourier_basis.m
@@ -37,7 +37,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_compute_fourier_basis.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_create_laplacian.m b/utils/gsp_create_laplacian.m
index c8c1351..29cdd8e 100644
--- a/utils/gsp_create_laplacian.m
+++ b/utils/gsp_create_laplacian.m
@@ -39,7 +39,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_create_laplacian.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_ddf2dcdf.m b/utils/gsp_ddf2dcdf.m
index a7ea825..a16f025 100644
--- a/utils/gsp_ddf2dcdf.m
+++ b/utils/gsp_ddf2dcdf.m
@@ -17,7 +17,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_ddf2dcdf.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_delta.m b/utils/gsp_delta.m
index 60df066..fdf8e5c 100644
--- a/utils/gsp_delta.m
+++ b/utils/gsp_delta.m
@@ -4,7 +4,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_delta.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_distanz.m b/utils/gsp_distanz.m
index 7d4ebe4..385fd35 100644
--- a/utils/gsp_distanz.m
+++ b/utils/gsp_distanz.m
@@ -22,7 +22,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_distanz.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_estimate_lmax.m b/utils/gsp_estimate_lmax.m
index 84dbdae..7afc9a0 100644
--- a/utils/gsp_estimate_lmax.m
+++ b/utils/gsp_estimate_lmax.m
@@ -24,7 +24,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_estimate_lmax.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_graph_sparsify.m b/utils/gsp_graph_sparsify.m
index fa0df52..396a0ca 100644
--- a/utils/gsp_graph_sparsify.m
+++ b/utils/gsp_graph_sparsify.m
@@ -14,15 +14,16 @@
%
% Example:
%
-% epsilon = 0.4;
+% epsilon = 0.5;
% param.distribute = 1;
-% param.Nc = 20;
+% nnparam.k = 20;
+% param.nnparam = nnparam;
% G = gsp_sensor(256,param);
% G2 = gsp_graph_sparsify(G,epsilon);
-% figure(100);
+% figure(1)
% gsp_plot_graph(G);
% title('Original graph')
-% figure(101);
+% figure(2)
% gsp_plot_graph(G2);
% title('Sparsified graph')
%
@@ -41,7 +42,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_graph_sparsify.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_hop_distanz.m b/utils/gsp_hop_distanz.m
index d002519..bfd581c 100644
--- a/utils/gsp_hop_distanz.m
+++ b/utils/gsp_hop_distanz.m
@@ -16,7 +16,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_hop_distanz.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_isdirected.m b/utils/gsp_isdirected.m
index 51528a2..dcd73cb 100644
--- a/utils/gsp_isdirected.m
+++ b/utils/gsp_isdirected.m
@@ -16,7 +16,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_isdirected.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_lanczos_op.m b/utils/gsp_lanczos_op.m
index 4c8a40c..d618eca 100644
--- a/utils/gsp_lanczos_op.m
+++ b/utils/gsp_lanczos_op.m
@@ -4,7 +4,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_lanczos_op.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_nn_distanz.m b/utils/gsp_nn_distanz.m
index b4d317c..afba227 100644
--- a/utils/gsp_nn_distanz.m
+++ b/utils/gsp_nn_distanz.m
@@ -45,7 +45,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_nn_distanz.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_norm_l1_filterbank.m b/utils/gsp_norm_l1_filterbank.m
index dc03130..c55f9bd 100644
--- a/utils/gsp_norm_l1_filterbank.m
+++ b/utils/gsp_norm_l1_filterbank.m
@@ -4,7 +4,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_norm_l1_filterbank.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_norm_l2_filterbank.m b/utils/gsp_norm_l2_filterbank.m
index e38697b..ac6331d 100644
--- a/utils/gsp_norm_l2_filterbank.m
+++ b/utils/gsp_norm_l2_filterbank.m
@@ -24,7 +24,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_norm_l2_filterbank.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_norm_tig.m b/utils/gsp_norm_tig.m
index 7240063..fdd25e1 100644
--- a/utils/gsp_norm_tig.m
+++ b/utils/gsp_norm_tig.m
@@ -21,7 +21,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_norm_tig.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_norm_tik.m b/utils/gsp_norm_tik.m
index 3772774..aedc04d 100644
--- a/utils/gsp_norm_tik.m
+++ b/utils/gsp_norm_tik.m
@@ -18,7 +18,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_norm_tik.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_norm_tv.m b/utils/gsp_norm_tv.m
index c1441a5..272a07b 100644
--- a/utils/gsp_norm_tv.m
+++ b/utils/gsp_norm_tv.m
@@ -15,7 +15,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_norm_tv.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_plotfig.m b/utils/gsp_plotfig.m
index e1bfd7e..6f9deae 100644
--- a/utils/gsp_plotfig.m
+++ b/utils/gsp_plotfig.m
@@ -22,7 +22,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_plotfig.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_point2dcdf.m b/utils/gsp_point2dcdf.m
index 7d0635e..a0e6eda 100644
--- a/utils/gsp_point2dcdf.m
+++ b/utils/gsp_point2dcdf.m
@@ -19,7 +19,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_point2dcdf.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_repmatline.m b/utils/gsp_repmatline.m
index f252263..068f98f 100644
--- a/utils/gsp_repmatline.m
+++ b/utils/gsp_repmatline.m
@@ -22,7 +22,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_repmatline.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_reset_seed.m b/utils/gsp_reset_seed.m
index 37c4425..d1506fb 100644
--- a/utils/gsp_reset_seed.m
+++ b/utils/gsp_reset_seed.m
@@ -12,7 +12,7 @@ function gsp_reset_seed(n)
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_reset_seed.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_resistance_distance.m b/utils/gsp_resistance_distance.m
index b01c5cc..d5814b1 100644
--- a/utils/gsp_resistance_distance.m
+++ b/utils/gsp_resistance_distance.m
@@ -4,7 +4,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_resistance_distance.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_resistance_distances.m b/utils/gsp_resistance_distances.m
index 656c14a..7d06eb1 100644
--- a/utils/gsp_resistance_distances.m
+++ b/utils/gsp_resistance_distances.m
@@ -61,7 +61,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_resistance_distances.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_rmse_mv.m b/utils/gsp_rmse_mv.m
index 0cde161..3aeff5b 100644
--- a/utils/gsp_rmse_mv.m
+++ b/utils/gsp_rmse_mv.m
@@ -34,7 +34,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_rmse_mv.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_spectrum_cdf_approx.m b/utils/gsp_spectrum_cdf_approx.m
index abb1c4a..968b61c 100644
--- a/utils/gsp_spectrum_cdf_approx.m
+++ b/utils/gsp_spectrum_cdf_approx.m
@@ -67,7 +67,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_spectrum_cdf_approx.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_symmetrize.m b/utils/gsp_symmetrize.m
index 99f10a8..bc23b8d 100644
--- a/utils/gsp_symmetrize.m
+++ b/utils/gsp_symmetrize.m
@@ -18,7 +18,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_symmetrize.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/gsp_tree_depths.m b/utils/gsp_tree_depths.m
index 89d666f..6d25f93 100644
--- a/utils/gsp_tree_depths.m
+++ b/utils/gsp_tree_depths.m
@@ -33,7 +33,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/gsp_tree_depths.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
diff --git a/utils/utils/boolean.m b/utils/utils/boolean.m
index 5cba9ee..0f8b467 100644
--- a/utils/utils/boolean.m
+++ b/utils/utils/boolean.m
@@ -6,7 +6,7 @@
% Url: http://lts2research.epfl.ch/gsp/doc/utils/utils/boolean.php
% Copyright (C) 2013-2016 Nathanael Perraudin, Johan Paratte, David I Shuman.
-% This file is part of GSPbox version 0.5.1
+% This file is part of GSPbox version 0.5.2
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by