求教Matlab编程 求出某向量x前n大元素位置

来源:百度知道 编辑:UC知道 时间:2024/06/04 11:38:37
如向量 x=(0.2 0.3 0.5 0.1 0.8 0.5 0.4 0.7 0.5 0.1 0.5 0.9 0.5)
尽量不用循环,用matlab函数求出x前5大元素的位置,结果如
(12 5 8 3 6)or(12 5 8 3 9)。。。。求出一个就行了,主要是不想用循环,加快速度 那位大虾能给出具体编程,在此谢过 !
多谢,我现在用的就是matlab,只是编个程序,不大,不想再涉及其他软件

% 用max函数(下面程序在matlab里调通了,没问题)
%[y,I]=max(X)返回向量X的最大元素存入y,最大元素的序号存入I
% 假设向量x,x=A是为了不改变原向量
A=x;
[y,a1]=max(A);
A(a1)=-inf;
[y,a2]=max(A);
A(a2)=-inf;
[y,a3]=max(A);
A(a3)=-inf;
[y,a4]=max(A);
A(a4)=-inf;
[y,a5]=max(A);
A(a5)=-inf;
disp('x前5大元素的位置;')
Positions=[a1,a2,a3,a4,a5]

提个建议,你如果让人用c或c++或java估计很快就会有答案的,matlab使用虽然简单,但得对这个软件有了解才成。编程是程序员的事,而用matlab做题是数学家的事。两码事,虽然两者之间有联系。