| Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) | 
![]()  | 
	
| 
	 | 
| 		
			
			 | 
		#1 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2011-12-20 
				
				
				
					帖子: 2
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			大家好,我是matlab初学者,从c转行而来. 
		
		
		
		
		
		
		
	我想实现这样一个函数 function [output] = find_max_position(input,max_amount) 功能为输出一个max_amount行两列的矩阵,每一列分别是input(300x300)矩阵中最大的max_amount个值的行号与列号 注:input矩阵中有重复数据, 如input(300x300)= 9 8 7 ... 9 8 7... 9 8 7... ......... 其余都未零,则输出最大5个数的行号与列号为 1 1 2 1 3 1 1 2 2 2 我之前尝试了很多sort()和find()的算法,效果都不好,希望各位帮助.先谢了!  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#2 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2011-12-20 
				
				
				
					帖子: 2
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			大家看一下这样写有问题么? 
		
		
		
		
		
		
		
		
			function [output] = find_max_position(input,max_amount) output=zeros(max_amount,1); input=abs(input); max_value=max(max(input)); sorted=sort(input,1,'descend'); i=0; for j=1:300 for k=1:300 if input(j,k)>=sorted(max_amount) && i<max_amount i = i + 1; output(i)=j+300*k; end end end end 此帖于 2011-12-21 10:27 被 hipichu777 编辑。  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#3 | 
| 
			
			 高级会员 
			
			
			
			注册日期: 2008-05-13 
				
				年龄: 45 
				
					帖子: 232
				 
				
				
				声望力: 22 ![]()  | 
	
	
	
		
		
			
			 
			
			for k=1:300 
		
		
		
		
		
		
			[row(k).vlu col(k).vlu] = find(input(:,1) == max(input,[],1)); end 
				__________________ 
		
		
		
		
	工科'985'博士,(图像处理、分析及理解;模式识别;运动估计;数据分析等)定做程序、算法实现--qq:752105755  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 |