| Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) | 
![]()  | 
	
| 		
			
			 | 
		#1 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2009-04-24 
				
				
				
					帖子: 3
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 有一个矩阵X(m,n),想找到里面最大的元素值及坐标, 并要求X保持不变. 如何实现? ![]() 谢谢  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#2 | 
| 
			
			 高级会员 
			
			
			
			注册日期: 2008-01-02 
				
				
				
					帖子: 247
				 
				
				
				声望力: 22 ![]()  | 
	
	
	
		
		
			
			 
			
			[m,n]=size(X); 
		
		
		
		
		
		
		
	v=sort(reshape(1,m*n),'descend'); v=v(1:10);%X中前十个最大的. idx=[]; for i=1:10 idx=[idx; find(X==v(i))]; end %idx就是X中前十个最大值的位置(依次的).  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#3 | 
| 
			
			 高级会员 
			
			
			
			注册日期: 2008-01-02 
				
				
				
					帖子: 247
				 
				
				
				声望力: 22 ![]()  | 
	
	
	
		
		
			
			 
			
			或者: 
		
		
		
		
		
		
		
	[m,n]=size(X); v=sort(reshape(1,m*n),'descend'); v=v(1:10);%X中前十个最大的. [tf idx]=ismember(X,v) %idx就是X中前十个最大值的位置(依次的).  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#4 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2009-04-24 
				
				
				
					帖子: 3
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 试了一下, 好像不行,原因如下:1. reshape 好像不能用reshape(X,m*n),只能用(X,m,n),这样就只能对列sort,因此结果是从前面列往后取,没有遍及整个矩阵X ![]() 2.位置没有按矩阵中的行列坐标给出(因为实际的矩阵比较大,要求知道相应坐标的信息),只给出在矩阵中的顺序位置,只有一个值 ![]() 我把程序贴出来,请大家帮我看看: function sort_a_matrix clear clc X=rand(4,5) [m,n]=size(X); max_number=10; max_value=sort(reshape(X,m,n),'descend') max_value=max_value(1:max_number) % max_site=[]; % for i=1:max_number % max_site=[max_site;find(X==max_value(i))]; % end [tf max_site]=ismember(X,max_value) max_value; max_site  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#5 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2009-04-24 
				
				
				
					帖子: 3
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			ok啦 
		
		
		
		
		
		
		
	![]() function sort_a_matrix clear clc X=rand(4,5) [m,n]=size(X); max_number=10; max_value=sort(reshape(X,1,m*n),'descend') max_value=max_value(1:max_number) % max_site(m,n)=zeros for i=1:max_number [r(i),c(i)]=find(X==max_value(i)); end  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 |