matlab中,如何确定向量中第二大数的位置

问题描述:

matlab中,如何确定向量中第二大数的位置
如 a=[100,1,1,1,2,2,2,1,4,1,2,5,99,0,0,1,1,1,2];
怎样想确定99的位置?
最好用的find函数
这个是我自己编的:
[y,x]=sort(a);
y(end-1) %为第二大数
x(end-1) %为第二大数的位置
但是,如果数据量是225000,排序本身就会浪费时间和内存,并且还新添变量y,x;
很浪费,
求更好的的方法~
1个回答 分类:综合 2014-09-26

问题解答:

我来补答
%将以下程序直接考入运行即可
a=[100,1,1,1,2,2,2,1,4,1,2,5,99,0,0,1,1,1,2];%用来测试程序的向量
[max_value max_position]=max(a);%先得到最大值的数值和位置
a(max_position)=min(a);
%将最大值的数值用向量最小值替代,这样第二大的值就变成了最大值,且所在位置不变
[max_value_2 max_position_2]=max(a)%这时取出的最大值就是我们所需要的第二大值了
a(max_position)=max_value;%记得将刚才的最大值复原,保持向量的完整性
%本程序不用sort函数,数据量很大时速度也非常快
%运行过程只产生4个中间变量,几乎不占用空间,您不妨试试
 
 
展开全文阅读
剩余:2000