稀疏编码matlab 教程


稀疏编码的matlab 程序实现,UC伯克利written by Bruno Olshausen
资源截图
代码片段和文件信息
/*
 * cgf.c: conj. grad. routine for finding optimal s - fast!
 */
#include 
#include 
#include “mex.h“

extern float frprmn();


#define sgn(x) (x>0 ? 1 : (x<0 ? -1 : 0))

extern  __declspec( dllexport )
void cgf(double *Sout double *nits double *nf double *ng
       double *Sin double *X int npats 
       double tol int maxiter int numflag);

/* Input & Output Arguments */

#define A_IN prhs[0] /* basis matrix */
#define X_IN prhs[1] /* data vectors */
#define S_IN prhs[2] /* initial guess for S */
#define LAMBDA_IN prhs[3] /* precision */
#define BETA_IN prhs[4] /* prior steepness */
#define SIGMA_IN        prhs[5]         /* scaling parameter for prior */
#define TOL_IN prhs[6] /* tolerance */
#define MAXITER_IN      prhs[7] /* maximum iterations for dfrpmin */
#define OUTFLAG_IN prhs[8] /* output flag */
#define NUMFLAG_IN prhs[9] /* pattern number output flag */

#define S_OUT           plhs[0] /* basis coeffs for each data vector */
#define NITS_OUT        plhs[1]         /* total iterations done by cg */
#define NF_OUT          plhs[2]         /* total P(s|xA) calcs */
#define NG_OUT          plhs[3]         /* total d/ds P(s|xA) calcs */

/* Define indexing macros for matricies */

/* L = dimension of input vectors
 * M = number of basis functions
 */

#define A_(ij) A[(i) + (j)*L] /* A is L x M */
#define X_(in) X[(i) + (n)*L] /* X is L x npats */

#define Sout_(in) Sout[(i) + (n)*M] /* S is M x npats */
#define Sin_(in) Sin[(i) + (n)*M] /* S is M x npats */

#define AtA_(ij) AtA[(i) + (j)*M] /* AtA is M x M */

/* Globals for using with frprmin */

static double *A; /* basis matrix */
static int L; /* data dimension */
static int M; /* number of basis vectors */
static double lambda; /* 1/noise_var */
static double beta; /* prior steepness */
static double sigma; /* prior scaling */
static double k1k2k3; /* precomputed constants for f1dim */

static double *x; /* current data vector being fitted */
static double *s0; /* init coefficient vector (1:M) */
static double *d; /* search dir. coefficient vector (1:M) */
static int outflag; /* print search progress */

static double *AtA; /* Only compute A‘*A once (1:M1:M) */
static double *Atx; /* A*x (1:M) */

static int fcount gcount;

static void init_global_arrays() 
{
  int  ijk;
  double *Ai *Aj sum;

  x      = (double *)malloc(L*sizeof(double));
  s0     = (double *)malloc(M*sizeof(double));
  d      = (double *)malloc(M*sizeof(double));
  AtA    = (double *)malloc(M*M*sizeof(double));
  Atx    = (double *)malloc(M*sizeof(double));

  /* Calc  A‘*A */
  for (i = 0; i < M; i++) {
    Ai=A+i*L;
    for (j = 0; j < M; j++) {
      Aj=A+j*L;
      sum=0.0;
      for (k = 0; k < L; k++) {
sum += Ai[k]*Aj[k];
      }
      AtA_(ij) = sum;
    }
  }
}

static void free_global_arrays() {

  free((double *)x);
  free((double *)s0);
  free((double *)d);
  free((double *)AtA);
  free((double *)Atx);
}



float init_f1

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2002-03-11 13:41  CodeMatlabBrunosparsenet
     文件      524472  2002-02-28 11:52  CodeMatlabBrunosparsenetA16.mat
     文件        7457  2002-02-27 12:22  CodeMatlabBrunosparsenetcgf.c
     文件       40960  2002-02-27 13:50  CodeMatlabBrunosparsenetcgf.dll
     文件       35250  2002-02-27 13:50  CodeMatlabBrunosparsenetcgf.map
     文件        1419  2002-02-27 14:35  CodeMatlabBrunosparsenetcgf_fitS.m
     文件         442  1998-04-14 21:43  CodeMatlabBrunosparsenetdisplay_network.m
     文件    20971712  2000-07-12 12:05  CodeMatlabBrunosparsenetIMAGES.mat
     文件         975  2000-07-12 12:07  CodeMatlabBrunosparsenetmake-your-own-images
     文件          97  2002-02-27 13:42  CodeMatlabBrunosparsenetmakefile
     目录           0  2002-03-11 13:26  CodeMatlabBrunosparsenet
rf
     文件        1494  2002-03-11 13:25  CodeMatlabBrunosparsenet
rfrent.c
     文件        2010  2002-03-11 13:25  CodeMatlabBrunosparsenet
rfrent.obj
     文件        1204  2002-03-11 13:25  CodeMatlabBrunosparsenet
rffrprmn.c
     文件        1603  2002-03-11 13:25  CodeMatlabBrunosparsenet
rffrprmn.obj
     文件         447  2002-03-11 13:25  CodeMatlabBrunosparsenet
rflinmin.c
     文件         664  2002-03-11 13:25  CodeMatlabBrunosparsenet
rflinmin.obj
     文件         386  2002-02-27 13:44  CodeMatlabBrunosparsenet
rfmakefile
     文件         176  2002-02-26 14:23  CodeMatlabBrunosparsenet
rfMakefile.original
     文件         386  2002-02-27 13:46  CodeMatlabBrunosparsenet
rfMakefile.vc
     文件         419  2002-03-11 13:25  CodeMatlabBrunosparsenet
rfmakefile.vcG6
     文件         509  2002-03-11 13:26  CodeMatlabBrunosparsenet
rfmakefile.vcGB
     文件        1309  2002-03-11 13:25  CodeMatlabBrunosparsenet
rfmnbrak.c
     文件        1814  2002-03-11 13:25  CodeMatlabBrunosparsenet
rfmnbrak.obj
     文件       45056  2002-02-27 13:44  CodeMatlabBrunosparsenet
rf
rfopt.dll
     文件        1073  2002-02-27 13:44  CodeMatlabBrunosparsenet
rf
rfopt.exp
     文件         609  2002-02-27 10:41  CodeMatlabBrunosparsenet
rf
rfopt.h
     文件        2860  2002-02-27 13:44  CodeMatlabBrunosparsenet
rf
rfopt.lib
     文件       34854  2002-02-27 13:44  CodeMatlabBrunosparsenet
rf
rfopt.map
     文件       45056  2002-03-11 13:26  CodeMatlabBrunosparsenet
rf
rfoptGB.dll
     文件        1081  2002-03-11 13:26  CodeMatlabBrunosparsenet
rf
rfoptGB.exp
............此处省略17个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)