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

조회 수: 7,744(최근 30일)
Arnab Pal 2018년 2월 15일
댓글: Walter Roberson 2021년 10월 15일
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).

댓글을 달려면 로그인하십시오.

### 채택된 답변

Walter Roberson 2018년 2월 15일
편집: MathWorks Support Team 2020년 2월 27일
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.

댓글을 달려면 로그인하십시오.

### 추가 답변(4개)

Bhagyesh Shiyani 2019년 12월 5일
what if i want both 8 positions, any code?
##### 댓글 수: 2표시숨기기 이전 댓글 수: 1
Walter Roberson 2020년 1월 15일
This will not return value and index, it will return row and column numbers.

댓글을 달려면 로그인하십시오.

Ujjawal Barnwal 2020년 6월 7일
a = [7 8 8 2 5 6];
position = find(a==8)
##### 댓글 수: 0표시숨기기 이전 댓글 수: -1

댓글을 달려면 로그인하십시오.

Sorne Duong 2021년 7월 21일
a = 1, 3, 6, 9, 10, 15
We know the fourth value is 9, but how to find the fourth value in MATLAB?
##### 댓글 수: 1표시숨기기 없음
Walter Roberson 2021년 7월 21일
a = [1, 3, 6, 9, 10, 15]
a = 1×6
1 3 6 9 10 15
a(4)
ans = 9
Unless you mean how to predict the 4th value -- that is, how to find a rule or formula for the values.
Legendré (and others) proved that for any finite set of finite values, that there is a polynomial that goes through all of the values exactly (to within computation error.) So you can construct a polynomial that goes through all of the points. There are an infinite number of expressions that can be used... but because any list of values can be fit, if what you were given was
a = [1, 3, 6, X, 10, 15]
and you were asked to figure out what X is, then the technique of constructing polynomials cannot decide -- there are an infinite number of polynomials that go through (1,1), (2,3), (3,6), (5,10), (6,15) and an infinite number of them have a different value at X = 4. There is a polynomial for [1,3,6,-8,10,15]. There is a polynomial for [1,3,6,10,10,15]. There is a polynomial for [1,3,6,72432015,10,15] .
Because of this, if the question is to figure out what X is given a = [1, 3, 6, X, 10, 15] then the answer has to be "It could be any finite number".

댓글을 달려면 로그인하십시오.

Nilesh Kumar Bibhuti 2021년 10월 15일
편집: Walter Roberson 2021년 10월 15일
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표시숨기기 없음
Walter Roberson 2021년 10월 15일
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.

댓글을 달려면 로그인하십시오.

### Community Treasure Hunt

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

Start Hunting!