nikcleju@0: # -*- coding: utf-8 -*- nikcleju@0: """ nikcleju@17: Defines standard parameters for approximate reconstruction simulation nikcleju@0: nikcleju@17: Author: Nicolae Cleju nikcleju@0: """ nikcleju@17: __author__ = "Nicolae Cleju" nikcleju@17: __license__ = "GPL" nikcleju@17: __email__ = "nikcleju@gmail.com" nikcleju@0: nikcleju@0: import numpy nikcleju@17: nikcleju@17: # Solver algorithms to run nikcleju@0: from algos import * nikcleju@0: nikcleju@17: # Test parameters nikcleju@15: paramstest = dict() nikcleju@21: #paramstest['algosN'] = nesta, # tuple of algorithms not depending on lambda nikcleju@21: #paramstest['algosL'] = lambda_sl0, # tuple of algorithms depending on lambda (ABS-lambda) nikcleju@21: paramstest['algosN'] = gap,mixed_sl0,mixed_bp,nesta # tuple of algorithms not depending on lambda nikcleju@21: paramstest['algosL'] = lambda_sl0,lambda_bp,lambda_ompeps,lambda_tst nikcleju@15: paramstest['d'] = 50.0 nikcleju@15: paramstest['sigma'] = 2.0 nikcleju@15: paramstest['deltas'] = numpy.array([0.05, 0.45, 0.95]) nikcleju@15: paramstest['rhos'] = numpy.array([0.05, 0.45, 0.95]) nikcleju@15: #deltas = numpy.array([0.95]) nikcleju@15: #deltas = numpy.arange(0.05,1.,0.05) nikcleju@15: #rhos = numpy.array([0.05]) nikcleju@17: paramstest['numvects'] = 10; # Number of vectors to generate nikcleju@21: paramstest['SNRdb'] = 40.; # This is norm(signal)/norm(noise), so power, not energy nikcleju@15: # Values for lambda nikcleju@15: #lambdas = [0 10.^linspace(-5, 4, 10)]; nikcleju@15: paramstest['lambdas'] = numpy.array([0., 0.0001, 0.01, 1, 100, 10000]) nikcleju@15: paramstest['savedataname'] = 'approx_pt_stdtest.mat' nikcleju@15: paramstest['saveplotbase'] = 'approx_pt_stdtest_' nikcleju@15: paramstest['saveplotexts'] = ('png','pdf','eps') nikcleju@0: nikcleju@0: nikcleju@21: # Prove 11 convergence nikcleju@19: paramsl1prove = dict() nikcleju@19: paramsl1prove['algosN'] = nesta, # tuple of algorithms not depending on lambda nikcleju@19: paramsl1prove['algosL'] = lambda_bp, # tuple of algorithms depending on lambda (ABS-lambda) nikcleju@19: paramsl1prove['d'] = 50.0 nikcleju@19: paramsl1prove['sigma'] = 2.0 nikcleju@19: paramsl1prove['deltas'] = numpy.array([0.8]) # m = 0.8*50 = 40 nikcleju@19: paramsl1prove['rhos'] = numpy.array([0.15]) # l = d - rho*m = 50 - 0.15*40 = 44 nikcleju@19: paramsl1prove['numvects'] = 100; # Number of vectors to generate nikcleju@19: paramsl1prove['SNRdb'] = 40.; # This is norm(signal)/norm(noise), so power, not energy nikcleju@19: paramsl1prove['lambdas'] = numpy.array([0.00001, 0.0001, 0.001, 0.01, 0.1, 1, 10, 100, 1000, 10000]) nikcleju@19: paramsl1prove['savedataname'] = 'prove_approx_ell1.mat' nikcleju@19: paramsl1prove['saveplotbase'] = 'prove_approx_ell1' nikcleju@19: paramsl1prove['saveplotexts'] = ('png','pdf','eps') nikcleju@19: nikcleju@19: nikcleju@0: # Standard parameters 1 nikcleju@0: # All algorithms, 100 vectors nikcleju@17: # d = 50, sigma = 2, delta and rho full resolution (0.05 step), lambdas = 0, 1e-4, 1e-2, 1, 100, 10000 nikcleju@17: # Noise 40db nikcleju@17: params1 = dict() nikcleju@17: params1['algosN'] = gap,mixed_sl0,mixed_bp,nesta # tuple of algorithms not depending on lambda nikcleju@17: params1['algosL'] = lambda_sl0,lambda_bp,lambda_ompeps,lambda_tst # tuple of algorithms depending on lambda (ABS-lambda) nikcleju@17: params1['d'] = 50.0 nikcleju@21: params1['sigma'] = 1.2 nikcleju@17: params1['deltas'] = numpy.arange(0.05,1.,0.05) nikcleju@17: params1['rhos'] = numpy.arange(0.05,1.,0.05) nikcleju@21: params1['numvects'] = 100; # Number of vectors to generate nikcleju@17: params1['SNRdb'] = 40.; # This is norm(signal)/norm(noise), so power, not energy nikcleju@17: params1['lambdas'] = numpy.array([0., 0.0001, 0.01, 1, 100, 10000]) nikcleju@21: params1['savedataname'] = 'approx_pt_params1.mat' nikcleju@21: params1['saveplotbase'] = 'approx_pt_params1_' nikcleju@17: params1['saveplotexts'] = ('png','pdf','eps') nikcleju@0: nikcleju@0: # Standard parameters 2 nikcleju@0: # All algorithms, 100 vectors nikcleju@17: # d = 20, sigma = 10, delta and rho full resolution (0.05 step), lambdas = 0, 1e-4, 1e-2, 1, 100, 10000 nikcleju@17: # Noise 40db nikcleju@17: params2 = dict() nikcleju@17: params2['algosN'] = gap,mixed_sl0,mixed_bp,nesta # tuple of algorithms not depending on lambda nikcleju@17: params2['algosL'] = lambda_sl0,lambda_bp,lambda_ompeps,lambda_tst # tuple of algorithms depending on lambda (ABS-lambda) nikcleju@21: params2['d'] = 50.0 nikcleju@21: params2['sigma'] = 2 nikcleju@17: params2['deltas'] = numpy.arange(0.05,1.,0.05) nikcleju@17: params2['rhos'] = numpy.arange(0.05,1.,0.05) nikcleju@21: params2['numvects'] = 100; # Number of vectors to generate nikcleju@17: params2['SNRdb'] = 40.; # This is norm(signal)/norm(noise), so power, not energy nikcleju@17: params2['lambdas'] = numpy.array([0., 0.0001, 0.01, 1, 100, 10000]) nikcleju@21: params2['savedataname'] = 'approx_pt_params2.mat' nikcleju@21: params2['saveplotbase'] = 'approx_pt_params2_' nikcleju@17: params2['saveplotexts'] = ('png','pdf','eps') nikcleju@0: nikcleju@0: nikcleju@17: # Standard parameters 3 nikcleju@0: # All algorithms, 100 vectors nikcleju@17: # d = 50, sigma = 2, delta and rho full resolution (0.05 step), lambdas = 0, 1e-4, 1e-2, 1, 100, 10000 nikcleju@17: # Identical with 1 but with 20dB SNR noise nikcleju@17: params3 = dict() nikcleju@17: params3['algosN'] = gap,mixed_sl0,mixed_bp,nesta # tuple of algorithms not depending on lambda nikcleju@17: params3['algosL'] = lambda_sl0,lambda_bp,lambda_ompeps,lambda_tst # tuple of algorithms depending on lambda (ABS-lambda) nikcleju@17: params3['d'] = 50.0 nikcleju@21: params3['sigma'] = 1.2 nikcleju@17: params3['deltas'] = numpy.arange(0.05,1.,0.05) nikcleju@17: params3['rhos'] = numpy.arange(0.05,1.,0.05) nikcleju@21: params3['numvects'] = 100; # Number of vectors to generate nikcleju@17: params3['SNRdb'] = 20.; # This is norm(signal)/norm(noise), so power, not energy nikcleju@17: params3['lambdas'] = numpy.array([0., 0.0001, 0.01, 1, 100, 10000]) nikcleju@21: #params3['lambdas'] = numpy.array([0., 0.01, 0.1, 1, 10, 100]) nikcleju@21: params3['savedataname'] = 'approx_pt_params3.mat' nikcleju@21: params3['saveplotbase'] = 'approx_pt_params3_' nikcleju@17: params3['saveplotexts'] = ('png','pdf','eps') nikcleju@0: nikcleju@0: # Standard parameters 4 nikcleju@0: # All algorithms, 100 vectors nikcleju@17: # d = 20, sigma = 10, delta and rho full resolution (0.05 step), lambdas = 0, 1e-4, 1e-2, 1, 100, 10000 nikcleju@17: # Identical to 2 but with 20dB SNR noise nikcleju@17: params4 = dict() nikcleju@17: params4['algosN'] = gap,mixed_sl0,mixed_bp,nesta # tuple of algorithms not depending on lambda nikcleju@17: params4['algosL'] = lambda_sl0,lambda_bp,lambda_ompeps,lambda_tst # tuple of algorithms depending on lambda (ABS-lambda) nikcleju@21: params4['d'] = 50.0 nikcleju@21: params4['sigma'] = 2.0 nikcleju@17: params4['deltas'] = numpy.arange(0.05,1.,0.05) nikcleju@17: params4['rhos'] = numpy.arange(0.05,1.,0.05) nikcleju@21: params4['numvects'] = 100; # Number of vectors to generate nikcleju@17: params4['SNRdb'] = 20.; # This is norm(signal)/norm(noise), so power, not energy nikcleju@17: params4['lambdas'] = numpy.array([0., 0.0001, 0.01, 1, 100, 10000]) nikcleju@21: #params4['lambdas'] = numpy.array([0., 0.01, 0.1, 1, 10, 100]) nikcleju@21: params4['savedataname'] = 'approx_pt_params4.mat' nikcleju@21: params4['saveplotbase'] = 'approx_pt_params4_' nikcleju@17: params4['saveplotexts'] = ('png','pdf','eps') nikcleju@21: nikcleju@21: nikcleju@21: # Standard parameters 5 nikcleju@21: # All algorithms, 100 vectors nikcleju@21: # d = 50, sigma = 2, delta and rho full resolution (0.05 step), lambdas = 0, 1e-4, 1e-2, 1, 100, 10000 nikcleju@21: # VIRTUALLY NO NOISE, Noise 200db nikcleju@21: params5 = dict() nikcleju@21: params5['algosN'] = gap,mixed_sl0,mixed_bp,nesta # tuple of algorithms not depending on lambda nikcleju@21: params5['algosL'] = lambda_sl0,lambda_bp,lambda_ompeps,lambda_tst # tuple of algorithms depending on lambda (ABS-lambda) nikcleju@21: params5['d'] = 50.0 nikcleju@21: params5['sigma'] = 1.2 nikcleju@21: params5['deltas'] = numpy.arange(0.05,1.,0.05) nikcleju@21: params5['rhos'] = numpy.arange(0.05,1.,0.05) nikcleju@21: params5['numvects'] = 10; # Number of vectors to generate nikcleju@21: params5['SNRdb'] = 200.; # This is norm(signal)/norm(noise), so power, not energy nikcleju@21: params5['lambdas'] = numpy.array([0., 0.0001, 0.01, 1, 100, 10000]) nikcleju@21: params5['savedataname'] = 'approx_pt_params5.mat' nikcleju@21: params5['saveplotbase'] = 'approx_pt_params5_' nikcleju@21: params5['saveplotexts'] = ('png','pdf','eps') nikcleju@21: nikcleju@21: params3sl0 = dict() nikcleju@21: params3sl0['algosN'] = mixed_sl0, # tuple of algorithms not depending on lambda nikcleju@21: params3sl0['algosL'] = lambda_sl0, # tuple of algorithms depending on lambda (ABS-lambda) nikcleju@21: params3sl0['d'] = 50.0 nikcleju@21: params3sl0['sigma'] = 1.2 nikcleju@21: params3sl0['deltas'] = numpy.arange(0.05,1.,0.25) nikcleju@21: params3sl0['rhos'] = numpy.arange(0.05,1.,0.25) nikcleju@21: #params3sl0['deltas'] = numpy.array([0.85]) nikcleju@21: #params3sl0['rhos'] = numpy.array([0.15]) nikcleju@21: params3sl0['numvects'] = 10; # Number of vectors to generate nikcleju@21: params3sl0['SNRdb'] = 20.; # This is norm(signal)/norm(noise), so power, not energy nikcleju@21: #params3sl0['lambdas'] = numpy.array([0., 0.01, 0.1, 1, 10, 100]) nikcleju@21: params3sl0['lambdas'] = numpy.array([0.0001, 10000]) nikcleju@21: params3sl0['savedataname'] = 'approx_pt_params3sl0.mat' nikcleju@21: params3sl0['saveplotbase'] = 'approx_pt_params3sl0_' nikcleju@21: params3sl0['saveplotexts'] = ('png','pdf','eps')