Matlab - Cómo encontrar valores mayores en arreglos de acuerdo al orden

 
Vista:
sin imagen de perfil
Val: 60
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Cómo encontrar valores mayores en arreglos de acuerdo al orden

Publicado por Pilar (34 intervenciones) el 25/01/2018 23:24:40
Hola, tengo un caso particular que aún no logro cómo resolver, espero puedan ayudarme.
Tengo el siguiente arreglo de 101 elementos:
1
2
a=[0.0576300862316789	0.0576621713163863	0.0585042922056451	0.0607414598908939	0.0623751125231964	0.0616507814346697	0.0657936344230945	0.0941418699700253	0.159086108535974	0.223191816168747	0.182081688103828	0.0556822802711206	0.224400269407963	0.139377527978275	0.208540999863253	0.168502568230666	0.123860428230392	0.178411646093968	0.140542397426977	0.118209452080182	0.113432766139960	0.176563935643092	0.145638082742001	0.130450802846858	0.149420322836074	0.103933295577100	0.129681833604020	0.0860681337031712	0.162165903960626	0.211604222101748	0.139545007019492	0.105262958116234	0.140728930359906	0.199831337307867	0.208091080428639	0.171877549556737	0.209505430436842	0.170724164156591	0.207081767225051	0.149612962795540	0.215100450962213	0.199031000093617	0.0551909376636168	0.110533724348708	0.103292451755349	0.177800162116462	0.0572038368723621	0.0986793017817233	0.0178667847529531	0.245627933464903	1	0.249276652759747	0.0183986117663701	0.103077569095206	0.0605846927162993	0.190813260527121	0.112245085730615	0.121520473616639	0.0613294786078909	0.223318717597293	0.243432030098998	0.170587762710754	0.237609698133927	0.196906791284840	0.242611277393454	0.199620529556550	0.242131428983313	0.232723609846334	0.163884841989324	0.122473539860381	0.162092343727048	0.245223890826547	0.187385139897209	0.0991153538669213	0.148772664925400	0.118741450108535	0.169962229907607	0.147708999428773	0.164135473749470	0.198048907374355	0.126633795191900	0.131347694543135	0.155443246325607	0.196440870602039	0.135784259183168	0.183952703347002	0.226755485225644	0.150979647663465	0.242218507619798	0.0599051985542947	0.195293469572110	0.238719813319193	0.169726364382063	0.100213947717775	0.0699007486866738	0.0653907375314294	0.0660687959304845	0.0642699964261083	0.0618556720162170	0.0609373820008070	0.0608942476911859];
[maximo,Indice]=max(a);
Donde el valor máximo es el 1 y se encuentra en el indice 51 del arreglo. Debo encontrar el penúltimo mayor a ese número pero no debe ser el valor anterior ni el siguiente del máximo, es decir, que no sean los indices 50 ni 52, debo encontrar el mayor entre los valores restantes.
Si ordeno todo el arreglo de los valores menores a mayores quedaría de la siguiente manera:
1
2
3
4
[val,ind]=sort(a);
val= [0.0178667847529531	0.0183986117663701	0.0551909376636168	0.0556822802711206	0.0572038368723621	0.0576300862316789	0.0576621713163863	0.0585042922056451	0.0599051985542947	0.0605846927162993	0.0607414598908939	0.0608942476911859	0.0609373820008070	0.0613294786078909	0.0616507814346697	0.0618556720162170	0.0623751125231964	0.0642699964261083	0.0653907375314294	0.0657936344230945	0.0660687959304845	0.0699007486866738	0.0860681337031712	0.0941418699700253	0.0986793017817233	0.0991153538669213	0.100213947717775	0.103077569095206	0.103292451755349	0.103933295577100	0.105262958116234	0.110533724348708	0.112245085730615	0.113432766139960	0.118209452080182	0.118741450108535	0.121520473616639	0.122473539860381	0.123860428230392	0.126633795191900	0.129681833604020	0.130450802846858	0.131347694543135	0.135784259183168	0.139377527978275	0.139545007019492	0.140542397426977	0.140728930359906	0.145638082742001	0.147708999428773	0.148772664925400	0.149420322836074	0.149612962795540	0.150979647663465	0.155443246325607	0.159086108535974	0.162092343727048	0.162165903960626	0.163884841989324	0.164135473749470	0.168502568230666	0.169726364382063	0.169962229907607	0.170587762710754	0.170724164156591	0.171877549556737	0.176563935643092	0.177800162116462	0.178411646093968	0.182081688103828	0.183952703347002	0.187385139897209	0.190813260527121	0.195293469572110	0.196440870602039	0.196906791284840	0.198048907374355	0.199031000093617	0.199620529556550	0.199831337307867	0.207081767225051	0.208091080428639	0.208540999863253	0.209505430436842	0.211604222101748	0.215100450962213	0.223191816168747	0.223318717597293	0.224400269407963	0.226755485225644	0.232723609846334	0.237609698133927	0.238719813319193	0.242131428983313	0.242218507619798	0.242611277393454	0.243432030098998	0.245223890826547	0.245627933464903	0.249276652759747	1];
%indices de los valores ordenados:
ind=[49	53	43	12	47	1	2	3	90	55	4	101	100	59	6	99	5	98	96	7	97	95	28	8	48	74	94	54	45	26	32	44	57	21	20	76	58	70	17	81	27	24	82	85	14	31	19	33	23	78	75	25	40	88	83	9	71	29	69	79	16	93	77	62	38	36	22	46	18	11	86	73	56	91	84	64	80	42	66	34	39	35	15	37	30	41	10	60	13	87	68	63	92	67	89	65	61	72	50	52	51];
Donde vemos que el mayor es el 1, pero los valores próximos mayores según el orden son los correspondientes a los indices 50 y 52, los que no debo contar, así que el valor que necesito obtener es el que se encuentra antes de esos.
¿Cómo puedo resolver este problema con la misma idea pero que lo haga de forma directa?, es decir, aunque tuviera otro arreglo con diferentes valores pero que hiciera lo mismo, tomar el valor máximo y después encontrar el siguiente máximo pero que no sean ni su valor anterior ni el siguiente de él.
Espero me haya podido explicar y puedan ayudarme.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JESUS DAVID ARIZA ROYETH
Val: 5.376
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Cómo encontrar valores mayores en arreglos de acuerdo al orden

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 26/01/2018 17:28:14
1
2
3
4
5
6
7
a=[0.0576300862316789	0.0576621713163863	0.0585042922056451	0.0607414598908939	0.0623751125231964	0.0616507814346697	0.0657936344230945	0.0941418699700253	0.159086108535974	0.223191816168747	0.182081688103828	0.0556822802711206	0.224400269407963	0.139377527978275	0.208540999863253	0.168502568230666	0.123860428230392	0.178411646093968	0.140542397426977	0.118209452080182	0.113432766139960	0.176563935643092	0.145638082742001	0.130450802846858	0.149420322836074	0.103933295577100	0.129681833604020	0.0860681337031712	0.162165903960626	0.211604222101748	0.139545007019492	0.105262958116234	0.140728930359906	0.199831337307867	0.208091080428639	0.171877549556737	0.209505430436842	0.170724164156591	0.207081767225051	0.149612962795540	0.215100450962213	0.199031000093617	0.0551909376636168	0.110533724348708	0.103292451755349	0.177800162116462	0.0572038368723621	0.0986793017817233	0.0178667847529531	0.245627933464903	1	0.249276652759747	0.0183986117663701	0.103077569095206	0.0605846927162993	0.190813260527121	0.112245085730615	0.121520473616639	0.0613294786078909	0.223318717597293	0.243432030098998	0.170587762710754	0.237609698133927	0.196906791284840	0.242611277393454	0.199620529556550	0.242131428983313	0.232723609846334	0.163884841989324	0.122473539860381	0.162092343727048	0.245223890826547	0.187385139897209	0.0991153538669213	0.148772664925400	0.118741450108535	0.169962229907607	0.147708999428773	0.164135473749470	0.198048907374355	0.126633795191900	0.131347694543135	0.155443246325607	0.196440870602039	0.135784259183168	0.183952703347002	0.226755485225644	0.150979647663465	0.242218507619798	0.0599051985542947	0.195293469572110	0.238719813319193	0.169726364382063	0.100213947717775	0.0699007486866738	0.0653907375314294	0.0660687959304845	0.0642699964261083	0.0618556720162170	0.0609373820008070	0.0608942476911859];
[maximo,Indice]=sort(a);
s=or(Indice==(Indice(end)-1),Indice==(Indice(end)+1));
Indice(s)=[];
maximo(s)=[];
valor=maximo(end-1);
indicevalor=Indice(end-1);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar