annotate examples/SMALL_solver_test_Audio.m @ 39:8f734534839a

(none)
author idamnjanovic
date Mon, 14 Mar 2011 15:35:01 +0000
parents cbf3521c25eb
children 8e660fd14774
rev   line source
idamnjanovic@1 1 function SMALL_solver_test_Audio
idamnjanovic@25 2 %%% Example test of solvers on Sparco audio source separation problems
idamnjanovic@25 3 %
idamnjanovic@25 4 % Centre for Digital Music, Queen Mary, University of London.
idamnjanovic@25 5 % This file copyright 2009 Ivan Damnjanovic.
idamnjanovic@25 6 %
idamnjanovic@25 7 % This program is free software; you can redistribute it and/or
idamnjanovic@25 8 % modify it under the terms of the GNU General Public License as
idamnjanovic@25 9 % published by the Free Software Foundation; either version 2 of the
idamnjanovic@25 10 % License, or (at your option) any later version. See the file
idamnjanovic@25 11 % COPYING included with this distribution for more information.
idamnjanovic@25 12 %
idamnjanovic@1 13 %
idamnjanovic@1 14 % The main purpose of this example is to show how to use SMALL structure
idamnjanovic@1 15 % to solve SPARCO audio source3 separation problems (401-402) and to
idamnjanovic@1 16 % compare results from different solvers.
idamnjanovic@1 17 % To generate SMALL.Problem part of structure you can use generateProblem
idamnjanovic@1 18 % function from Sparco toolbox giving the problem number and any
idamnjanovic@1 19 % additional parameters you might want to change. Alternatively, you can
idamnjanovic@1 20 % might want to consult sparco documentation to write a problem by
idamnjanovic@1 21 % yourself. There are four fields the must be specified in SMALL.Problem
idamnjanovic@1 22 % - A, b, sizeA and reconstruct.
idamnjanovic@1 23 %
idamnjanovic@1 24 % To generate SMALL.solver part of the structure you must specify three
idamnjanovic@1 25 % fields:
idamnjanovic@1 26 %
idamnjanovic@1 27 % SMALL.solver.toolbox - string with toolbox name is needed because
idamnjanovic@1 28 % different toolboxes are calling solver
idamnjanovic@1 29 % functions in different ways.
idamnjanovic@1 30 % SMALL.solver.name - its string representing solver name (e.g.
idamnjanovic@1 31 % SolveBP)
idamnjanovic@1 32 % SMALL.solver.param - string that contains optional parameters for
idamnjanovic@1 33 % particular solver (all parameters you want to
idamnjanovic@1 34 % specify except A, b and size of solution)
idamnjanovic@1 35 %
idamnjanovic@1 36 % Every call to SMALL_solve function will generate following output:
idamnjanovic@1 37 %
idamnjanovic@1 38 % SMALL.solver.solution - contains solution vector x
idamnjanovic@1 39 % SMALL.solver.reconstructed - vector containing signal reconstructed
idamnjanovic@1 40 % from the solution
idamnjanovic@1 41 % SMALL.solver.time - time that solver spent to find the solution
idamnjanovic@1 42 %
idamnjanovic@1 43 % SMALL_plot function plots the SMALL.solver.solution and reconstructed
idamnjanovic@1 44 % sources against original audio sources.
idamnjanovic@1 45 % SMALL_playAudio function plays audio sources of original and
idamnjanovic@1 46 % reconstructed signal as well as mixed signal.
idamnjanovic@1 47 %
idamnjanovic@1 48 %
idamnjanovic@25 49 %%
idamnjanovic@1 50
idamnjanovic@1 51 fprintf('\n\nExample test of solvers on Sparco Audio problems (401,402).\n\n');
idamnjanovic@1 52
idamnjanovic@1 53 %%
idamnjanovic@1 54 % Generate SPARCO problem
idamnjanovic@1 55
idamnjanovic@1 56 global SMALL
idamnjanovic@1 57 SMALL.Problem = generateProblem(402,'show');
idamnjanovic@1 58 %%
idamnjanovic@1 59
idamnjanovic@5 60 i=1;
idamnjanovic@1 61 %%
idamnjanovic@1 62 % SMALL Conjugate Gradient test
idamnjanovic@1 63
idamnjanovic@5 64 SMALL.solver(i)=SMALL_init_solver;
idamnjanovic@5 65 SMALL.solver(i).toolbox='SMALL';
idamnjanovic@5 66 SMALL.solver(i).name='SMALL_cgp';
idamnjanovic@1 67
idamnjanovic@1 68 % In the following string all parameters except matrix, measurement vector
idamnjanovic@1 69 % and size of solution need to be specified. If you are not sure which
idamnjanovic@1 70 % parameters are needed for particular solver type "help <Solver name>" in
idamnjanovic@1 71 % MATLAB command line
idamnjanovic@1 72
idamnjanovic@5 73 SMALL.solver(i).param='1500, 1e-14';
idamnjanovic@1 74
idamnjanovic@5 75 SMALL.solver(i)=SMALL_solve(SMALL.Problem, SMALL.solver(i));
idamnjanovic@1 76
idamnjanovic@1 77
idamnjanovic@5 78 i=i+1;
idamnjanovic@1 79 %%
idamnjanovic@1 80 % SolveOMP from SparseLab test
idamnjanovic@1 81
idamnjanovic@5 82 SMALL.solver(i)=SMALL_init_solver;
idamnjanovic@5 83 SMALL.solver(i).toolbox='SparseLab';
idamnjanovic@5 84 SMALL.solver(i).name='SolveBP';
idamnjanovic@1 85
idamnjanovic@1 86 % In the following string all parameters except matrix, measurement vector
idamnjanovic@1 87 % and size of solution need to be specified. If you are not sure which
idamnjanovic@1 88 % parameters are needed for particular solver type "help <Solver name>" in
idamnjanovic@1 89 % MATLAB command line
idamnjanovic@1 90
idamnjanovic@5 91 SMALL.solver(i).param='10';
idamnjanovic@1 92
idamnjanovic@5 93 SMALL.solver(i)=SMALL_solve(SMALL.Problem, SMALL.solver(i));
idamnjanovic@1 94
idamnjanovic@1 95 SMALL_plot(SMALL);
idamnjanovic@1 96 SMALL_playAudio(SMALL);
idamnjanovic@1 97 %%
idamnjanovic@1 98
idamnjanovic@1 99
idamnjanovic@1 100 end % function SMALL_solver_test