From 1c6d9b66312ac18526aae20b9b500dae38dccff2 Mon Sep 17 00:00:00 2001 From: Nathanael Perraudin Date: Mon, 21 Mar 2016 11:51:49 +0100 Subject: [PATCH] version 0.5.2 --- Contents.m | 2 +- demos/Contents.m | 5 +- demos/gsp_demo.m | 2 +- demos/gsp_demo_graph_embedding.m | 2 +- demos/gsp_demo_graph_tv.m | 2 +- demos/gsp_demo_learn_graph.m | 22 +- demos/gsp_demo_pyramid.m | 2 +- demos/gsp_demo_wavelet.m | 2 +- demos/gsp_demo_wavelet_dn.m | 2 +- embedding/Contents.m | 2 +- embedding/gsp_compute_coordinates.m | 2 +- embedding/gsp_isomap.m | 2 +- embedding/gsp_laplacian_eigenmaps.m | 2 +- embedding/gsp_lle.m | 2 +- embedding/gsp_weight2distance.m | 2 +- filters/Contents.m | 2 +- filters/gsp_approx_filter.m | 2 +- filters/gsp_design_abspline.m | 2 +- filters/gsp_design_can_dual.m | 2 +- filters/gsp_design_expwin.m | 2 +- filters/gsp_design_half_cosine.m | 2 +- filters/gsp_design_heat.m | 2 +- filters/gsp_design_held.m | 2 +- filters/gsp_design_itersine.m | 2 +- filters/gsp_design_mexican_hat.m | 2 +- filters/gsp_design_meyer.m | 2 +- filters/gsp_design_papadakis.m | 2 +- filters/gsp_design_regular.m | 2 +- filters/gsp_design_simoncelli.m | 2 +- filters/gsp_design_simple_tf.m | 2 +- filters/gsp_design_smooth_indicator.m | 2 +- filters/gsp_design_warped_translates.m | 2 +- filters/gsp_evaluate_can_dual.m | 2 +- filters/gsp_filter.m | 2 +- filters/gsp_filter_analysis.m | 4 +- filters/gsp_filter_evaluate.m | 2 +- filters/gsp_filter_inverse.m | 2 +- filters/gsp_filter_synthesis.m | 8 +- filters/gsp_filterbank_bounds.m | 2 +- filters/gsp_filterbank_matrix.m | 2 +- filters/gsp_gabor_filterbank.m | 2 +- filters/gsp_mat2vec.m | 2 +- filters/gsp_multiply_filters.m | 2 +- filters/gsp_test_duality.m | 2 +- filters/gsp_test_duality_coefficient.m | 2 +- filters/gsp_tighten_filter.m | 2 +- filters/gsp_vec2mat.m | 2 +- filters/gsp_warp_filter.m | 2 +- filters/gsp_wlog_scales.m | 2 +- filters/utils/gsp_erdos_renyi_density.m | 2 +- .../gsp_erdos_renyi_density_normalized.m | 2 +- filters/utils/gsp_erdos_renyi_warp.m | 2 +- filters/utils/gsp_free_conv_norm_semi.m | 2 +- filters/utils/gsp_mono_cubic_warp_fn.m | 2 +- filters/utils/gsp_pwl_warp_fn.m | 2 +- filters/utils/gsp_random_regular_density.m | 2 +- filters/utils/histnorm.m | 2 +- graph_ml/.gitignore | 1 - graph_ml/demo_classification_graph.m | 128 ------ graph_ml/graph_mlcl_compare_all.m | 424 ------------------ graph_ml/gsp_classification_knn.m | 59 --- graph_ml/gsp_classification_matrix.m | 49 -- graph_ml/gsp_classification_tik.m | 88 ---- graph_ml/gsp_classification_tv.m | 86 ---- graph_ml/gsp_classification_tv_new.m | 151 ------- graph_ml/gsp_frkhs.m | 82 ---- graph_ml/gsp_frpcaog_1g.m | 116 ----- graph_ml/gsp_frpcaog_2g.m | 133 ------ graph_ml/gsp_gpcatv_2g.m | 149 ------ graph_ml/gsp_knn_classify_graph.m | 164 ------- graph_ml/gsp_matrix2label.m | 50 --- graph_ml/gsp_ml_rls.m | 145 ------ graph_ml/gsp_ml_rls_tik.m | 145 ------ graph_ml/gsp_ml_rls_tv.m | 150 ------- graph_ml/gsp_regression_Lx_l1.m | 161 ------- graph_ml/gsp_regression_knn.m | 50 --- graph_ml/gsp_regression_tik.m | 189 -------- graph_ml/gsp_regression_tv.m | 165 ------- graph_ml/gsp_rkhs_evaluate.m | 94 ---- graphs/Contents.m | 2 +- graphs/gsp_2dgrid.m | 2 +- graphs/gsp_airfoil.m | 2 +- graphs/gsp_bunny.m | 2 +- graphs/gsp_comet.m | 2 +- graphs/gsp_community.m | 2 +- graphs/gsp_components.m | 2 +- graphs/gsp_copy_graph_attributes.m | 2 +- graphs/gsp_cube.m | 2 +- graphs/gsp_david_sensor_network.m | 2 +- graphs/gsp_erdos_renyi.m | 2 +- graphs/gsp_full_connected.m | 2 +- graphs/gsp_graph.m | 2 +- graphs/gsp_graph_default_parameters.m | 2 +- .../gsp_graph_default_plotting_parameters.m | 2 +- graphs/gsp_hypergraph.m | 2 +- graphs/gsp_logo.m | 2 +- graphs/gsp_low_stretch_tree.m | 2 +- graphs/gsp_minnesota.m | 2 +- graphs/gsp_modified_path.m | 2 +- graphs/gsp_nn_graph.m | 2 +- graphs/gsp_nn_hypergraph.m | 2 +- graphs/gsp_non_uniform.m | 2 +- graphs/gsp_non_uniform_patch.m | 2 +- graphs/gsp_path.m | 2 +- graphs/gsp_random_regular.m | 2 +- graphs/gsp_random_ring.m | 2 +- graphs/gsp_ring.m | 2 +- graphs/gsp_rmse_mv_graph.m | 2 +- graphs/gsp_sensor.m | 2 +- graphs/gsp_separate_graph.m | 2 +- graphs/gsp_sphere.m | 2 +- graphs/gsp_spiral.m | 2 +- graphs/gsp_stochastic_block_graph.m | 2 +- graphs/gsp_subgraph.m | 2 +- graphs/gsp_swiss_roll.m | 2 +- graphs/gsp_torus.m | 2 +- graphs/gsp_tree.m | 2 +- graphs/gsp_two_moons.m | 2 +- graphs/gsp_update_coordinates.m | 2 +- graphs/gsp_update_weights.m | 2 +- graphs/misc/createRandRegGraph.m | 2 +- graphs/misc/rescale_center.m | 2 +- gsp_install.m | 2 +- gsp_install_unlocbox.m | 2 +- gsp_make.m | 2 +- gsp_start.m | 2 +- gspbox_version | 2 +- imageprocessing/Contents.m | 2 +- imageprocessing/gsp_patch_graph.m | 2 +- .../classify_usps.m => learn_graph/Contents.m | 33 +- learn_graph/gsp_learn_graph_l2_degrees.m | 269 +++++++++++ learn_graph/gsp_learn_graph_log_degrees.m | 274 +++++++++++ operators/Contents.m | 2 +- operators/gsp_div.m | 2 +- operators/gsp_gft.m | 2 +- operators/gsp_grad.m | 2 +- operators/gsp_grad_mat.m | 2 +- operators/gsp_graph_multiresolution.m | 2 +- operators/gsp_gwft.m | 2 +- operators/gsp_gwft_frame_matrix.m | 2 +- operators/gsp_igft.m | 2 +- operators/gsp_interpolate.m | 2 +- operators/gsp_kron_reduce.m | 2 +- operators/gsp_kron_reduction.m | 2 +- operators/gsp_localize.m | 2 +- operators/gsp_modulate.m | 2 +- operators/gsp_ngwft.m | 2 +- operators/gsp_ngwft_frame_matrix.m | 2 +- operators/gsp_pyramid_analysis.m | 2 +- operators/gsp_pyramid_analysis_single.m | 2 +- operators/gsp_pyramid_cell2coeff.m | 2 +- operators/gsp_pyramid_synthesis.m | 2 +- operators/gsp_pyramid_synthesis_single.m | 2 +- operators/gsp_translate.m | 2 +- plotting/Contents.m | 2 +- plotting/gsp_plot_edges.m | 2 +- plotting/gsp_plot_filter.m | 2 +- plotting/gsp_plot_graph.m | 2 +- plotting/gsp_plot_sgram.m | 2 +- plotting/gsp_plot_signal.m | 2 +- plotting/gsp_plot_signal_spectral.m | 2 +- pointsclouds/Contents.m | 2 +- pointsclouds/gsp_pointcloud.m | 2 +- pointsclouds/gsp_twospirals.m | 2 +- .../to_be_included/clusterincluster.m | 2 +- pointsclouds/to_be_included/corners.m | 2 +- .../to_be_included/crescentfullmoon.m | 2 +- pointsclouds/to_be_included/datasetsdemo.m | 2 +- pointsclouds/to_be_included/halfkernel.m | 2 +- pointsclouds/to_be_included/outlier.m | 2 +- pointsclouds/to_be_included/twospirals.m | 2 +- prox/Contents.m | 2 +- prox/gsp_proj_b2_filterbank.m | 2 +- prox/gsp_proj_filterbank.m | 2 +- prox/gsp_prox_l1_filterbank.m | 2 +- prox/gsp_prox_l2_filterbank.m | 2 +- prox/gsp_prox_tik.m | 2 +- prox/gsp_prox_tv.m | 2 +- prox/gsp_solve_l0.m | 2 +- prox/gsp_solve_l1.m | 2 +- prox/gsp_wavelet_dn.m | 2 +- sgwt_require/create_synthetic_dataset.m | 2 +- sgwt_require/sgwt_cheby_square.m | 2 +- sgwt_require/sgwt_kernel_abspline3.m | 2 +- sgwt_require/sgwt_kernel_abspline5.m | 2 +- sgwt_require/sgwt_kernel_simple_tf.m | 2 +- utils/Contents.m | 2 +- utils/gsp_adj2vec.m | 2 +- utils/gsp_cheby_coeff.m | 2 +- utils/gsp_cheby_eval.m | 2 +- utils/gsp_cheby_op.m | 2 +- utils/gsp_check_connectivity.m | 2 +- utils/gsp_check_connectivity_undirected.m | 2 +- utils/gsp_check_weights.m | 2 +- utils/gsp_classic2graph_eig_order.m | 2 +- utils/gsp_compute_fourier_basis.m | 2 +- utils/gsp_create_laplacian.m | 2 +- utils/gsp_ddf2dcdf.m | 2 +- utils/gsp_delta.m | 2 +- utils/gsp_distanz.m | 2 +- utils/gsp_estimate_lmax.m | 2 +- utils/gsp_graph_sparsify.m | 11 +- utils/gsp_hop_distanz.m | 2 +- utils/gsp_isdirected.m | 2 +- utils/gsp_lanczos_op.m | 2 +- utils/gsp_nn_distanz.m | 2 +- utils/gsp_norm_l1_filterbank.m | 2 +- utils/gsp_norm_l2_filterbank.m | 2 +- utils/gsp_norm_tig.m | 2 +- utils/gsp_norm_tik.m | 2 +- utils/gsp_norm_tv.m | 2 +- utils/gsp_plotfig.m | 2 +- utils/gsp_point2dcdf.m | 2 +- utils/gsp_repmatline.m | 2 +- utils/gsp_reset_seed.m | 2 +- utils/gsp_resistance_distance.m | 2 +- utils/gsp_resistance_distances.m | 2 +- utils/gsp_rmse_mv.m | 2 +- utils/gsp_spectrum_cdf_approx.m | 2 +- utils/gsp_symmetrize.m | 2 +- utils/gsp_tree_depths.m | 2 +- utils/utils/boolean.m | 2 +- 222 files changed, 774 insertions(+), 3015 deletions(-) delete mode 100644 graph_ml/.gitignore delete mode 100644 graph_ml/demo_classification_graph.m delete mode 100644 graph_ml/graph_mlcl_compare_all.m delete mode 100644 graph_ml/gsp_classification_knn.m delete mode 100644 graph_ml/gsp_classification_matrix.m delete mode 100644 graph_ml/gsp_classification_tik.m delete mode 100644 graph_ml/gsp_classification_tv.m delete mode 100644 graph_ml/gsp_classification_tv_new.m delete mode 100644 graph_ml/gsp_frkhs.m delete mode 100644 graph_ml/gsp_frpcaog_1g.m delete mode 100644 graph_ml/gsp_frpcaog_2g.m delete mode 100644 graph_ml/gsp_gpcatv_2g.m delete mode 100644 graph_ml/gsp_knn_classify_graph.m delete mode 100644 graph_ml/gsp_matrix2label.m delete mode 100644 graph_ml/gsp_ml_rls.m delete mode 100644 graph_ml/gsp_ml_rls_tik.m delete mode 100644 graph_ml/gsp_ml_rls_tv.m delete mode 100644 graph_ml/gsp_regression_Lx_l1.m delete mode 100644 graph_ml/gsp_regression_knn.m delete mode 100644 graph_ml/gsp_regression_tik.m delete mode 100644 graph_ml/gsp_regression_tv.m delete mode 100644 graph_ml/gsp_rkhs_evaluate.m rename graph_ml/classify_usps.m => learn_graph/Contents.m (61%) create mode 100644 learn_graph/gsp_learn_graph_l2_degrees.m create mode 100644 learn_graph/gsp_learn_graph_log_degrees.m 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