How do i get the index position of a multiple number from an array?

3 visualizaciones (últimos 30 días)
yashvin
yashvin el 3 de Jul. de 2015
Comentada: yashvin el 7 de Jul. de 2015
Hi My array is
A=[300 500 900 100 1800 34 400 600 2700 450]
I want to get the index of the multiple of 900 i.e 900,1800,2700
Index=find(A==900)
Any way of modifying it to get the index of the multiples?

Respuestas (1)

per isakson
per isakson el 3 de Jul. de 2015
Editada: per isakson el 3 de Jul. de 2015
Seems to do it
>> is = arrayfun( @(num) mod(num,900)==0, A )
is =
0 0 1 0 1 0 0 0 1 0
>> A(is)
ans =
900 1800 2700
>> ix = find(is)
ix =
3 5 9
>>
or better
>> is = mod( A, 900 ) == 0
is =
0 0 1 0 1 0 0 0 1 0
Answer:
Index = find( mod(A,900) == 0 );
  6 comentarios
per isakson
per isakson el 3 de Jul. de 2015
Editada: per isakson el 3 de Jul. de 2015
I didn't read, however this might do it.
>> [ix1,ix2] = cssm
ix1 =
1 4 7
ix2 =
3 6 9
where
function [ix1,ix2] = cssm
B = [ 0 4 8 12 16 20 24 28 32 36 40 43 ];
ix1 = 1;
ix2 = [];
while true
ix = find( B(ix1(end):end)==B(ix1(end))+8, 1,'first' ) + ix1(end)-1;
if isempty(ix)
break
end
ix2(end+1) = ix;
ix1(end+1) = ix+1;
end
ix1(end) = [];
end
There is certainly potential for improvements.

Iniciar sesión para comentar.

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by