24小时热门版块排行榜    

查看: 211  |  回复: 2
当前主题已经存档。

leepanybyq

铜虫 (初入文坛)

[交流] 【讨论】matlab的busy问题

function [Y] = lle(X,K,d)

[D,N] = size(X);
fprintf(1,'LLE running on %d points in %d dimensions\n',N,D);


% STEP1: COMPUTE PAIRWISE DISTANCES & FIND NEIGHBORS
fprintf(1,'-->Finding %d nearest neighbours.\n',K);

X2 = sum(X.^2,1);
distance = repmat(X2,N,1)+repmat(X2',1,N)-2*X'*X;

[sorted,index] = sort(distance);
neighborhood = index(21+K),;

% STEP2: SOLVE FOR RECONSTRUCTION WEIGHTS
fprintf(1,'-->Solving for reconstruction weights.\n');

if(K>D)
  fprintf(1,'   [note: K>D; regularization will be used]\n');
  tol=1e-3; % regularlizer in case constrained fits are ill conditioned
else
  tol=0;
end

W = zeros(K,N);
for ii=1:N
   z = X(:,neighborhood(:,ii))-repmat(X(:,ii),1,K); % shift ith pt to origin
   C = z'*z;                                        % local covariance
   C = C + eye(K,K)*tol*trace(C);                   % regularlization (K>D)
   W(:,ii) = C\ones(K,1);                           % solve Cw=1
   W(:,ii) = W(:,ii)/sum(W(:,ii));                  % enforce sum(w)=1
end;

% STEP 3: COMPUTE EMBEDDING FROM EIGENVECTS OF COST

MATRIX M=(I-W)'(I-W)
fprintf(1,'-->Computing embedding.\n');

% M=eye(N,N); % use a sparse matrix with storage for 4KN nonzero elements
M = sparse(1:N,1:N,ones(1,N),N,N,4*K*N);
for ii=1:N
   w = W(:,ii);
   jj = neighborhood(:,ii);
   M(ii,jj) = M(ii,jj) - w';
   M(jj,ii) = M(jj,ii) - w;
   M(jj,jj) = M(jj,jj) + w*w';
end;

% CALCULATION OF EMBEDDING
options.disp = 0; options.isreal = 1; options.issym = 1;
[Y,eigenvals] = eigs(M,d+1,0,options);
Y = Y(:,2:d+1)'*sqrt(N); % bottom evect is [1,1,1,1...] with eval 0

fprintf(1,'Done.\n');


这是我从网上下的程序,大概意思是:输入是一个D×N的矩阵,

把每一列看作一个D维的点,然后找每个点的K个近邻点,并建立

起每个点与他的K个近邻点的关系矩阵,最后的输出是一个d×N

的矩阵(d
一个40×100的矩阵,然后运行后得到了20×100的矩阵,也就是

降了20维,但再拿另一个40×100的矩阵 来运行,matlab就busy

了,死机,有如下警告:Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 1.077831e-016.
请各位高手出手相救,不胜感激!
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

woshilsh

荣誉版主 (职业作家)

优秀版主


小木虫(金币+0.5):给个红包,谢谢回帖交流
矩阵奇异,这个可能是你输入数据有问题!

只能修改程序了
[center][url=http://www.91cool.net/][img]http://id.91cool.net/sign/?name=小木虫印&say=各位版主辛苦了![/img][/url][/center]
2楼2009-07-13 16:22:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

leepanybyq

铜虫 (初入文坛)

引用回帖:
Originally posted by woshilsh at 2009-7-13 16:22:
矩阵奇异,这个可能是你输入数据有问题!

只能修改程序了

是step2中的for循环中的矩阵奇异了 C\ones(k,1),但不知道如何该?
3楼2009-07-15 10:30:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 leepanybyq 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见