How to sort the matrix quickly?
2 次查看(过去 30 天)
显示 更早的评论
Dear all, How to sort the matrix quickly? Now i use this code to do it.
[V,DD]=eig(KK,MM);
DD=abs(DD);
mp=3*(Ms+1)*(2*Ns+1)+P1*(2*Ns+1)+2*P2*(2*Ns+1); % the total dimension of the matrix
for p=1:mp
for q=p+1:mp
if DD(p,p)>= DD(q,q)
d=DD(p,p);
dd=V(:,p);
DD(p,p)=DD(q,q);
V(:,p)=V(:,q);
DD(q,q)=d;
V(:,q)=dd;
end
end
end
Thank you very much.
0 个评论
回答(2 个)
Image Analyst
2012-12-10
And what's wrong with the built-in sort() function? Why aren't you using that? Is this a homework exercise?
2 个评论
Image Analyst
2012-12-10
Uh, not quite sure I follow that. Anyway, Roger did it below using sort() and he's highly respected and always or nearly always right, so I believe using the built-in sort() function is the way to go.
Roger Stafford
2012-12-10
The following should be a much faster way of sorting V and DD by the absolute values of the eigenvalues in DD:
[V,DD] = eig(KK,MM);
D = diag(DD);
[~,p] = sort(abs(D));
V = V(:,p);
DD = diag(D(p));
Roger Stafford
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Shifting and Sorting Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!