# How to find the position of a number in an array?

2,944 views (last 30 days)

Show older comments

If I have a vector, a = [7 8 8 2 5 6], how do I compute the positions of the value 8?

I expect 2 and 3 or (1,2) and (1,3).

##### 0 Comments

### Accepted Answer

Walter Roberson
on 15 Feb 2018

Edited: MathWorks Support Team
on 27 Feb 2020

You can use the “find” function to return the positions corresponding to an array element value. For example:

a = [7 8 8 2 5 6];

linearIndices = find(a==8)

linearIndices =

2 3

To get the row and column indices separately, use:

[row,col] = find(a==8)

row =

1 1

col =

2 3

If you only need the position of one occurrence, you could use the syntax “find(a==8,1)”. You can also specify a direction if you specifically want the first or last occurrence, such as “find(a==8,1,’first’). For more information on these options, see “find”.

##### 2 Comments

Arvind Andrew Das
on 19 Jul 2022

Walter Roberson
on 20 Jul 2022

find() can never return 0. Perhaps you are looking at ans for a different operation?

### More Answers (4)

Bhagyesh Shiyani
on 5 Dec 2019

what if i want both 8 positions, any code?

##### 2 Comments

Florian Reinbold
on 15 Jan 2020

Hi Bhagyesh

i would suggest this one:

[val, idx] = find(a==8);

It seems to make a great job! :)

Cheers

Florian

Walter Roberson
on 15 Jan 2020

This will not return value and index, it will return row and column numbers.

Sorne Duong
on 21 Jul 2021

a = 1, 3, 6, 9, 10, 15

We know the fourth value is 9, but how to find the fourth value in MATLAB?

##### 4 Comments

Nilesh Kumar Bibhuti
on 15 Oct 2021

Edited: Walter Roberson
on 15 Oct 2021

BRO , THIS WILL GIVE U THE DESIRED OUTPUT . HAPPY CODING :)

#include <stdio.h>

#define MAX_SIZE 100 // Maximum array size

int main()

{

int arr[MAX_SIZE] ,brr[MAX_SIZE] ;

int size, i, toSearch, found ,k=0;

/* Input size of array */

printf("Enter size of array: ");

scanf("%d", &size);

/* Input elements of array */

printf("Enter elements in array: ");

for (i = 0; i < size; i++)

{

scanf("%d", &arr[i]);

}

printf("\nEnter element to search: ");

scanf("%d", &toSearch);

for (i = 0; i < size; i++)

{

if (arr[i] == toSearch)

{

brr[k] = i+1 ;

printf("%d ",brr[k]);

k++ ;

}

}

return 0;

}

##### 1 Comment

Walter Roberson
on 15 Oct 2021

In C, int size should really be size_t size and your scanf() should be using %lu instead of %d . i and k should also be size_t

You should be checking the return status of each scanf() call .

Also

int main()

should be

int main(void)

unless you are using K&R C from before C was standardized.

The user is expecting the positions to be returned, rather than displayed.

You probably shouldn't be assuming integer for the array, but that would be an acceptable limitation if specifically documented.

You do not use or initialize found.

Korosh Agha Mohammad Ghasemi
on 25 Jun 2024

Moved: Voss
on 25 Jun 2024

To find the positions of the value 8 in the vector a = [7 8 8 2 5 6], you can use the find function in MATLAB. Here's how you can do it:

a = [7 8 8 2 5 6];

% Find the positions of the value 8

positions = find(a == 8);

disp('Positions of value 8:');

disp(positions);

This code will output the indices of the elements in a that are equal to 8. For the given vector, it will display 2 and 3.

If you need the positions in a 1-based index format like (1,2) and (1,3) (assuming a is a row vector), you can directly use the indices obtained from the find function since MATLAB indexing starts from 1.

Here's the complete example:

a = [7 8 8 2 5 6];

% Find the positions of the value 8

positions = find(a == 8);

% Display the positions in (row, column) format

for i = 1:length(positions)

fprintf('(1,%d)\n', positions(i));

end

This script will output:

(1,2)

(1,3)

This clearly indicates the positions of the value 8 in the vector a.

##### 0 Comments

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!