FastICA盲源分离

最后更新于:2024-04-07 21:42:34

一、代码运行环境

MATLAB2016及更新版本。

二、程序介绍

注:图标代表该m文件为脚本文件,可以直接运行;图标代表函数文件,在没有输入变量的情况下无法直接运行。更详细的解释可以看这里

1.demoFastICA.m文件

进行FastICA的计算和绘图的脚本程序,可以直接运行。程序运行完成后,在MATLAB的工作区,双击icasig变量,可以查看求得独立分量的具体数值。

代码运行后,会绘制FastICA独立分量图、FastICA独立分量及其频谱图,如下两张图:

2.genSig.m文件

该程序用于生成仿真信号,并将混合后的信号保存为data.mat文件。该文件主要用于案例演示,大家有自己的数据的时候,可以忽略本文件。

运行程序后会绘制以下两张图片:

3.pFastICA.m文件

使用FastICA算法分解混合信号并画图的代码,该文件为函数文件,不能直接运行,需参考demoFastICA.m文件的方法进行调用。函数文件参数说明:

function [icasig, A, W] = pFastICA(mixedsig, numOfIC, g)
% pFastICA 使用FastICA算法分解混合信号并画图的代码
% 输入:
% mixedsig - 混合信号矩阵,每行代表一个观测值,每列代表一个观测点
% numOfIC - 需要提取的独立成分数目,如果不指定数目,则输入0
% g - 使用的非线性函数类型,可选'pow3', 'tanh', 'gauss'
%                       Value of 'g':      Nonlinearity used:
%                       'pow3' (default)   g(u)=u^3
%                       'tanh'             g(u)=tanh(a1*u)
%                       'gauss             g(u)=u*exp(-a2*u^2/2)
%
% 输出:
% icasig - 分解后的独立成分信号矩阵
% A - 混合矩阵
% W - 解混矩阵
% icasig = W*mixedsig
% mixedsig = A*icasig

4.pFastICAandFFT.m文件

使用FastICA算法分解混合信号并画图及其频谱的代码,该文件为函数文件,不能直接运行,需参考demoFastICA.m文件的方法进行调用。函数文件参数说明:

function [icasig, A, W] = pFastICAandFFT(mixedsig, numOfIC, g, fs)
% pFastICAandFFT 使用FastICA算法分解混合信号并画图及其频谱的代码
% 输入:
% mixedsig - 混合信号矩阵,每行代表一个观测值,每列代表一个观测点
% numOfIC - 需要提取的独立成分数目,如果不指定数目,则输入0
% g - 使用的非线性函数类型,可选'pow3', 'tanh', 'gauss'
%                       Value of 'g':      Nonlinearity used:
%                       'pow3' (default)   g(u)=u^3
%                       'tanh'             g(u)=tanh(a1*u)
%                       'gauss             g(u)=u*exp(-a2*u^2/2)
%
% fs - 采样频率

% 输出:
% icasig - 分解后的独立成分信号矩阵
% A - 混合矩阵
% W - 解混矩阵
% icasig = W*mixedsig
% mixedsig = A*icasig

5.FastICA_25文件夹

第三方FastICA工具箱,上述画图程序调用了其中的函数。

三、快速开始

1.运行测试脚本

先在MATLAB里打开下载好的文件夹,然后运行demoFastICA.m程序,程序运行完毕后如果没报错,且工作区成功得到icasig变量,图像正常绘制,则说明运行环境正常,程序正确。

2.导入数据

复制一个demoFastICA.m的文件副本,在这个副本里做如下修改:

根据你的文件类型的不同(excel,txt,csv等),将数据导入MATLAB的方法有所不同。同学们可以看博主针对常用文件的导入方法的这个教程,教程上未包含的数据类型,大家可以再参考这个文档

如果你已经实现了数据导入,这时候应该拥有了一个二维数据变量,这时候就可以调用函数进行FastICA分解了,需要注意该二维数据行列方向,每一行应该为一条混合数据。

3.实现特征提取

参照demoFastICA.m文件中第2、3步,pFastICA、pFastICAandFFT函数的调用方法,根据实际采样频率、需要提取的独立成分数目、使用的非线性函数类型修改设置,运行程序即可。

四、关于完整版与公开版代码

功能完整版公开版
数据导入、参数设置、实现FastICA分解
软件全部源码(函数m文件)×
混合矩阵数据长度无限制200个点以内
画图水印无水印有水印
导出icasig, A, W数据可导出不可导出

五、获取公开版程序(需使用电脑浏览器打开)

FastICA公开版代码

注:公开版代码需使用MATLAB2022a及以上版本。

六、获取完整版程序(使用电脑浏览器或者手机浏览器打开)

获取通道一(淘宝):点击此处获取完整版程序

获取通道二(本页面):点击下面“立即支付”按钮,付款后获取完整版代码下载链接和售后联系方式~本通道处于测试阶段,使用该通道可以额外优惠(仅需35元)。付款完成后刷新一下本页面即可看到下载链接。

(注意支付跳转失败的话,请使用浏览器打开本页面)

您需要先支付 35元 才能查看此处内容!立即支付

七、完整版代码重要更新

20240227 完成初版代码

八、常见问题

无。