关于FastICA盲源分离信号时出现以下错误 怎么解决?

weidanping0412 2019-05-14 01:29:36
程序: 请教MATLAB相关问题 如图 程序如下: %下程序为ICA的调用函数,输入为观察的信号,输出为解混后的信号 function Z=ICA(X) %以下为主程序,主要为原始信号的产生,观察信号和解混信号的作图 clear all; clc; N=10000; n=1:N;%N为采样点数 s1=load(‘lvbo1.mat’); s2=load(‘lvbo2.mat’); s3=load(‘lvbo3.mat’); s4=load(‘lvbo6.mat’); S=[s1;s2;s3;s4];%信号组成4*N A=rand(4,4); X=A*S;%观察信号 %-----------去均值--------- [M,T] = size(X); %获取输入矩阵的行/列数,行数为观测数据的数目,列数为采样点数 average=mean(X’)’; %均值 for i=1:M X(i,:)=X(i,:)-average(i)*ones(1,T); end %---------白化/球化------ Cx =cov(X’,1); %计算协方差矩阵Cx [eigvector,eigvalue]= eig(Cx); %计算Cx的特征值和特征向量 W=eigvalue^(-1/2)eigvector’; %白化矩阵 Z=WX; %正交矩阵 %----------迭代------- Maxcount=10000; %最大迭代次数 Critical=0.00001; %判断是否收敛 m=M; %需要估计的分量的个数 W=rand(m); for n=1:m WP=W(:,n); %初始权矢量(任意) % Y=WP’Z; % G=Y.3;%G为非线性函数,可取y3等 % GG=3Y.^2; %G的导数 count=0; LastWP=zeros(m,1); W(:,n)=W(:,n)/norm(W(:,n)); while abs(WP-LastWP)&abs(WP+LastWP)>Critical count=count+1; %迭代次数 LastWP=WP; %上次迭代的值 % WP=1/TZ((LastWP’Z).^3)’-3LastWP; for i=1:m WP(i)=mean(Z(i,:).*(tanh((LastWP)’*Z)))-(mean(1-(tanh((LastWP))’*Z).^2)).*LastWP(i); end WPP=zeros(m,1); for j=1:n-1 WPP=WPP+(WP’*W(:,j))*W(:,j); end WP=WP-WPP; WP=WP/(norm(WP)); if count==Maxcount fprintf(‘未找到相应的信号’); return; end end W(:,n)=WP; end Z=W’*Z; %源信号波形图 figure(1); subplot(4,1,1);plot(s1);title(‘源信号’); subplot(4,1,2);plot(s2); subplot(4,1,3);plot(s3); subplot(4,1,4);plot(s4); %观察信号(混合信号)波形图 figure(2); subplot(4,1,1);plot(X(1,:));title(‘观察信号(混合信号)’); subplot(4,1,2);plot(X(2,:)); subplot(4,1,3);plot(X(3,:)); subplot(4,1,4);plot(X(4,:)); xlabel(’’); figure(3); subplot(4,1,1);plot(Z(1,:));title(‘解混后的信号’); subplot(4,1,2);plot(Z(2,:)); subplot(4,1,3);plot(Z(3,:)); subplot(4,1,4);plot(Z(4,:)); 运行之后报错是这样的 请问怎么解决?
...全文
48 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

6,129

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 新技术前沿
社区管理员
  • 新技术前沿社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧