资源简介
这是一个基于负熵最大的快速ica matlab源代码,代码结构清晰,易学易懂,稍微改动就可以运用到自己的项目之中。
代码片段和文件信息
%基于负熵最大的FASTICA
fs=1000;
N=1024;
t=(0:N-1)/fs;
f1=60;
f2=150;
f3=200;
I1=sin(2*pi*f1*t);
I2=cos(2*pi*f2*t);
I3=randn(size(t));
% I3=sin(2*pi*f3*t);
subplot(431)plot(I1)title(‘输入信号1‘)axis([0100-44]);
subplot(432)plot(I2)title(‘输入信号2‘)axis([0100-44]);
subplot(433)plot(I3)title(‘输入信号3‘)axis([0100-44]);
% 将其组成矩阵
S=[I1;I2;I3]; % 信号个数即为变量数
% 因此S_all是一个变量个数*采样个数的矩阵
Sweight=rand(size(S1)); % 取一随机矩阵,作为信号混合的权矩阵
MixedS=Sweight*S; % 得到三个信号的混合信号矩阵
% 将混合矩阵重新排列并输出
subplot(434)plot(MixedS(1:))title(‘混合信号1‘)axis([0100-44]);
subplot(435)plot(MixedS(2:))title(‘混合信号2‘)axis([0100-44]);
subplot(436)plot(MixedS(3:))title(‘混合信号3‘)axis([0100-44]);
MixedS_bak=MixedS; % 将混合后的数据备份,以便在恢复时直接调用
%%%%%%%%%%%%%%%%%%%%%%%%%% 标准化 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
MixedS_mean=zeros(31);
for i=1:3
MixedS_mean(i)=mean(MixedS(i:));
end % 计算MixedS的均值
for i=1:3
for j=1:size(MixedS2)
MixedS(ij)=MixedS(ij)-MixedS_mean(i);
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%% 白化 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
MixedS_cov=cov(MixedS‘); % cov为求协方差的函数
[ED]=eig(MixedS_cov); % 对信号矩阵的协方差函数进行特征值分解
Q=inv(sqrt(D))*(E)‘; % Q为白化矩阵
MixedS_white=Q*MixedS; % MixedS_white为白化后的信号矩阵
IsI=cov(MixedS_white‘); % IsI应为单位阵
%%%%%%%%%%%%%%%%%%%%%%%% FASTICA算法 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
X=M
相关资源
- NURBS malab入门程序 实现字母 NURBS
- 基于matlab的直接序列扩频通信系统仿
- Bezier曲线_Bezier曲面_Matlab
- matlab车型识别demo
- 基于matlab-GUI简易计算器的设计
- 基于matlab-GUI实时人脸检测系统
- matlab中的db小波
- dwt代码,不用matlab自带的dwt
- 曲线测设程序用MATLAB语言编写
- MATLAB图像倾斜校正
- MATLAB实现马赫带
- 基于matlab的图像增强—空域变换增强
- 基于matlab的线性锐化滤波图像增强并
- MVDR 算法及相关文献
- 数字滤波器的Matlab仿真设计
- 使用matlab画ORBSLAM2运行保存的轨迹文件
- RRT路径规划
- 循环码性能的MATLAB
- GS算法的MATLAB代码
- SINS捷联惯导解算程序
- MATLAB观测器
- 直线阵和圆阵数字波束形成MatlAB程序
- 模拟电压波动与闪变的Matlab文件
- 粒子滤波算法 matlab
- OFDM调制程序 MATLAB
- 简单的声音滤波 matlab
- 基于栅格地图的Dijkstra算法路径规划
- Matlab一维FDTD卷积边界条件CPML
- SMOTE结合SVM算法matlab实现
- MATLAB文字识别程序解析
评论
共有 条评论