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

5 visualizzazioni (ultimi 30 giorni)
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?

Risposte (1)

per isakson
per isakson il 3 Lug 2015
Modificato: per isakson il 3 Lug 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 Commenti
per isakson
per isakson il 3 Lug 2015
Modificato: per isakson il 3 Lug 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.

Accedi per commentare.

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by