MATLAB 模式识别程序问题 改错

来源:百度知道 编辑:UC知道 时间:2024/05/15 18:33:29
%FastICA算法代码
%对数据进行标准化
close all,clear
load np_all
normsr=zscore(npp);
features=normsr';
[r,c]= size(features);
%对数据进行白化,使之为0均值,单位协方差
features = features - mean(features')'*ones(1,c);
[E, D]= eig(cov(features',1));
V= E*inv(sqrtm(D))*E';
z = V*features;
%使用FastICA算法对数据进行特征提取.非线性函数选择tanh(a1y)
epsilon=0.0001;
m=r;
p=1;
W=zeros(r,1);
for p=1:m
W(:,p)=rand(r,1);
W(:,p)=W(:,p)/norm(W(:,p));
exit=0;
count=0;
iter=1;
while exit==0;
count=count+1;
temp=W(:,p);
for i=1:m
W(i,p)=mean(z(i,.*(tanh((temp)'*z)))-(mean(1-(tanh((temp))'*z).^2)).*temp(i,1);
end
ssum=zeros(r,1);
for counter=1:p-1
ssum=ssum+(W(:,p)'*W(:,counter))*W(:,counter);
end
W(:,p)=W(:,p)-ssum;
W(:,p)=W(:,p)/norm(W(:,p));
if(abs((dot(W(:,p),temp)))<1+epsilon)&(abs((dot(W(:,p),temp)))>1-epsilon)
exit=1;

你的程序不是你自己写的吧。
np_all显然是一个数据存档啊。
凡是你再程序中没见过特别给初值的,直接就用的变量就包含在np_all里面。
mean(z(i,.*(tanh((temp)'*z)))至少这个里面就有个错
mean(z(i,这里*(tanh((temp)'*z)))要么就是删了什么,要么就多加了一个点。
帮你运行成功没有np_all怎么可能。 还只给20分,看程序就够累了,没诚意。