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

2.200 visualizzazioni (ultimi 30 giorni)
Arnab Pal il 15 Feb 2018
Commentato: Walter Roberson il 20 Lug 2022
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 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

### Risposta accettata

Walter Roberson il 15 Feb 2018
Modificato: MathWorks Support Team il 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 CommentiMostra NessunoNascondi Nessuno
Arvind Andrew Das il 19 Lug 2022
i did the find function, but it gives me the ans vector with all of the values of the array and the results are in true or false for my condition( 0 & 1 ).
Walter Roberson il 20 Lug 2022
find() can never return 0. Perhaps you are looking at ans for a different operation?

Accedi per commentare.

### Più risposte (4)

Bhagyesh Shiyani il 5 Dic 2019
what if i want both 8 positions, any code?
##### 2 CommentiMostra NessunoNascondi Nessuno
Florian Reinbold il 15 Gen 2020
Hi Bhagyesh
i would suggest this one:
[val, idx] = find(a==8);
It seems to make a great job! :)
Cheers
Florian
Walter Roberson il 15 Gen 2020
This will not return value and index, it will return row and column numbers.

Accedi per commentare.

Ujjawal Barnwal il 7 Giu 2020
a = [7 8 8 2 5 6];
position = find(a==8)
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

Sorne Duong il 21 Lug 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 CommentiMostra 2 commenti meno recentiNascondi 2 commenti meno recenti
Torsten il 30 Mag 2022
Try
values = T_03(int_t_03,4)
Reem RA il 30 Mag 2022
Thanks it worked!!!!

Accedi per commentare.

Nilesh Kumar Bibhuti il 15 Ott 2021
Modificato: Walter Roberson il 15 Ott 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 CommentoMostra -1 commenti meno recentiNascondi -1 commenti meno recenti
Walter Roberson il 15 Ott 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.

Accedi per commentare.

### Categorie

Scopri di più su Logical in Help Center e File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by