Matlab中FastICA工具箱的使用说明一、工具箱使用方法1.把工具箱的整个文件夹添加到工作目录(Current Directory)下,或者点击fileSet PathAdd Folder/Add with Subfolders把fastICA 的那个文件夹加进去save。后面的方法是一劳永逸的事情,这样在任何工作目录下都能够调用工具箱的函数了。2.在命令窗口(command window)直接输入fasticag 回车,就可以使用图形化用户界面了。也可以在你的程序中调用fastica()这个函数,具体参数的设置看后面有详解。二、各个文件的作用Cotents.m 文件全部都是注释,说明了每个文件的用途,不过都是英文,现总结如下:fastICA 有两种使用方法(fastICA 用了fixed‐point 算法)1. fasticag.m 是这个工具箱的图形化界面2. fastica.m 是命令行版本其他文件都是被fasticag.m 和fastica.m 调用。被fasticag.m 和fastica.m 调用的函数1. fpica.m 计算独立成分的主要算法2.whitennv.m 白化数据3.pcamat.m 对数据pca 4.remmean.m 减去均值5. icaplot.m 画出信号的曲线图。根据参数不同有不同的调用方式,具体看程序前面的注释(偷懒了啊)只被fasticag.m 调用的函数1.gui_cb.m 2.gui_adv.m 3.gui_advc.m 4. gui_l.m 装载数据初始化高斯矩阵5.gui_lc.m 6.gui_s.m 7.gui_sc.m 8.gui_cg.m 9.gui_help.m 备注:fasticag.m 主要调用gui_cb.m 其它有的的是被gui_cb.m 调用的,总之,直接或间接它们是被fasticag.m 调用。北京理工大学计算机学院刘茜倾心制作杂项:不调用别人也不被调用demosig.m 人工生成测试信号和混合信号(不需要输入参数)。用户可以,输入混合信号来看看FASTICA 是怎么工作的。已经被遗弃的dispsig.m 画数据向量的,现被icaplot.m,取代了三、函数fasticag.m 和fastica.m 的使用说明fasticag.m 调用此函数时参数不是必要的。也可以输入参数fasticag(mixedsig, InitialGuess) mixedsig 是以多维信号为行向量的矩阵InitialGuess 给出算法混合矩阵的初始值fastica.m [Out1, Out2, Out3] = fastica(mixedsig, varargin) 函数的输出由输出参数的个数决定,调用方式有以下几种1.[icasig] = fastica (mixedsig) mixedsig 是以多维信号为行向量的矩阵。icasig 的每一行是估计出的独立成分(IC)2.[icasig, A, W] = fastica (mixedsig) mixedsig 是以多维信号为行向量的矩阵。icasig 的每一行是估计出的独立成分(IC)A 是计算出的混合矩阵W 是计算出的解混矩阵3.[A, W] = fastica (mixedsig) 只保存混合矩阵和解混矩阵fastica 被调用时也可以加入选项参数。选项参数以参数对形式出现,顺序为参数名、参数值。不同参数对直接顺序可任意。参数名值和参数描述基本参数‘approach’选择去相关的方法‘symm’并行估计独立成分‘delf’一个一个的估计独立成分,为默认值‘num’估计出的独立成分的个数,默认与数据维数相等选择非线性‘g’非线性(nonlinearity)的不同方法'pow3' (default) g(u)=u^3北京理工大学计算机学院刘茜倾心制作'tanh' g(u)=tanh(a1*u) 'gauss g(u)=u*exp(‐a2*u^2/2) 'skew' g(u)=u^2‘finetune’调整(提高算法的统计性能)‘off’ 不调整pow3' 调整时采用此非线性方法g(u)=u^3 'tanh' 调整时采用此非线性方法g(u)=tanh(a1*u) 'gauss 调整时采用此非线性方法g(u)=u*exp(‐a2*u^2/2) 'skew' 调整时采用此非线性方法g(u)=u^2‘a1’当使用’g’时,g(u)=tanh(a1*u)中的参数a1,默认为1‘a2’当使用’g’时,g(u)=u*exp(‐a2*u^2/2)中的参数a2,默认为1‘mu’步长,默认为1;如果此值小于1,项目就使用稳定化的算法‘stabilization’‘on’ ‘off’默认控制是否进行稳定化,如果为’on’,当算法在两点之间或迭代次数为最大值的一半时还未收敛,mu 就会减半控制收敛‘epsilon’终止准则,默认为0.0001‘maxNumIterations’最大迭代次数,默认为1000‘sampleSize’一次迭代中的样本百分比(样本的选择是随机的),是0‐1之间的数字,默认为1,即全部样本‘initGuess’初始高斯矩阵A,默认为随机产生图像和文本输出‘verbose’是否以文本的格式输出算法的进展情况‘on’ 默认‘off’‘displayMode’ ’画出正在运行的独立成分的估计‘signals’ ‘basis’ ‘filters’ ‘off’默认‘displayInterval’迭代几次后绘图一次默认为1控制维度的减少和白化‘firstEig’‘firstEig’和’lastEig’决定了要保留的特征值的范围‘firstEig’是要保留的最大特征值的索引,默认为1’lastEig’’lastEig’ 是要保留的最小特征值的索引,默认为数据的维度。如果‘firstEig’和’lastEig’都取默认值那么就是取所有特征值‘interactivePCA’‘on’显示特征值给用户,用户可以和程序交互,选择特征值的范围。‘off’默认‘gui’用户可以使用和fasticag 相同的图形化用户界面如果已经知道协方差矩阵的特征值分解,就不必再计算了,可直接以参数形式给北京理工大学计算机学院刘茜倾心制作出,如下‘pcaE’(矩阵)特征向量‘pcaD’(矩阵)特征值如果已经知道白化数据,可以直接在算法中以参数给出,如下’whiteSig’(矩阵)白化信号‘whiteMat’(矩阵)白化矩阵‘dewhiteMat’(矩阵)去白化矩阵如果只想进行一些预处理,比如只白化或pca,那么使用only 选项‘only’‘white’只进行白化程序调用方法:[whitesig, WM, DWM] = fastica(mixedsig, 'only', 'white')返回白化的信号、白化矩阵、去白化矩阵。在fastICA这个算法中白化矩阵主要用来白化和降维,去白化矩阵是白化矩阵的伪逆。‘pca’只进行pca 降维程序调用方法:[E, D] = fastica(mixedsig, 'only', 'pca')返回特征向量和对角特征值矩阵‘all’默认值,进行白化‐降维‐ICA函数调用的例子:%使用'tanh' g(u)=tanh(a1*u)进行非线性,并行进行独立成分估计[icasig] = fastica (mixedsig, 'approach', 'symm', 'g', 'tanh'); %降维到10维,只估计出3个独立成分(IC)[icasig] = fastica (mixedsig, 'lastEig', 10, 'numOfIC', 3); %不输出收敛报告,不画独立成分的图[icasig] = fastica (mixedsig, 'verbose', 'off', 'displayMode', 'off'); 北京理工大学计算机学院刘茜倾心制作四、图形化界面介绍1. 点击Load data 载入数据,在弹出的输入框中输入矩阵的变量名。输入矩阵的行是一个信号。假如输入矩阵以列向量存储信号,可点击Transpose 来将矩阵转置。2. 点击Do ICA 来进行分析。3. 点击Save results 存储结果。在弹出输入框中填写后缀名字,比如填写FastICA 那么工作空间中就存储了变量A_FastICA , D_FastICA, E_FastICA IC_FastICA W_FastICA 等等。4. 选项1) 点击Plot data 可以看数据的一维图2) 点击Reduce dim.给出了数据的协方差矩阵的特征值结构的图。可以填写最大和最小特征值的索引号来限定特征值的范围,从而降维。如果要撤销这一降维的操作,就点击Original dim. 3) 点击Plot whitened 可以画出预处理过的数据。4) 点击Plot ICs 和点击Do ICA 有一样的进行主成份分析的效果,就是点击Do ICA 强制重新计算ICA,而点击Plot ICs 如果之前计算过结果,那么不重新计算,只画图。5) 如果算法可能不收敛,那么就可以用稳定化的版本,就要把Stablization 下拉菜单中选成’on’。假如在Adv. options 中的mu 是小于1 的,那么Stablization 就不能选了,那是因为系统会自动应用Stablization 模式6) 其它选项比如Approach 等可参见上面fastica.m 的参数对照表7) 点击Help 可以参见英文帮助