Меню

Matlab как найти индекс элемента матрицы

Array Indexing

In MATLAB®, there are three primary approaches to accessing array elements based on their location (index) in the array. These approaches are indexing by position, linear indexing, and logical indexing.

Indexing with Element Positions

The most common way is to explicitly specify the indices of the elements. For example, to access a single element of a matrix, specify the row number followed by the column number of the element.

e is the element in the 3,2 position (third row, second column) of A .

You can also reference multiple elements at a time by specifying their indices in a vector. For example, access the first and third elements of the second row of A .

To access elements in a range of rows or columns, use the colon . For example, access the elements in the first through third row and the second through fourth column of A .

An alternative way to compute r is to use the keyword end to specify the second column through the last column. This approach lets you specify the last column without knowing exactly how many columns are in A .

If you want to access all of the rows or columns, use the colon operator by itself. For example, return the entire third column of A .

In general, you can use indexing to access elements of any array in MATLAB regardless of its data type or dimensions. For example, directly access a column of a datetime array.

For higher-dimensional arrays, expand the syntax to match the array dimensions. Consider a random 3-by-3-by-3 numeric array. Access the element in the second row, third column, and first sheet of the array.

For more information on working with multidimensional arrays, see Multidimensional Arrays.

Indexing with a Single Index

Another method for accessing elements of an array is to use only a single index, regardless of the size or dimensions of the array. This method is known as linear indexing . While MATLAB displays arrays according to their defined sizes and shapes, they are actually stored in memory as a single column of elements. A good way to visualize this concept is with a matrix. While the following array is displayed as a 3-by-3 matrix, MATLAB stores it as a single column made up of the columns of A appended one after the other. The stored vector contains the sequence of elements 12 , 45 , 33 , 36 , 29 , 25 , 91 , 48 , 11 , and can be displayed using a single colon.

For example, the 3,2 element of A is 25 , and you can access it using the syntax A(3,2) . You can also access this element using the syntax A(6) , since 25 is sixth element of the stored vector sequence.

While linear indexing can be less intuitive visually, it can be powerful for performing certain computations that are not dependent on the size or shape of the array. For example, you can easily sum all of the elements of A without having to provide a second argument to the sum function.

The sub2ind and ind2sub functions help to convert between original array indices and their linear version. For example, compute the linear index of the 3,2 element of A .

Convert from the linear index back to its row and column form.

Indexing with Logical Values

Using true and false logical indicators is another useful way to index into arrays, particularly when working with conditional statements. For example, say you want to know if the elements of a matrix A are less than the corresponding elements of another matrix B . The less-than operator returns a logical array whose elements are 1 when an element in A is smaller than the corresponding element in B .

Now that you know the locations of the elements meeting the condition, you can inspect the individual values using ind as the index array. MATLAB matches the locations of the value 1 in ind to the corresponding elements of A and B , and lists their values in a column vector.

MATLAB «is» functions also return logical arrays that indicate which elements of the input meet a certain condition. For example, check which elements of a string vector are missing using the ismissing function.

Suppose you want to find the values of the elements that are not missing. Use the

operator with the index vector ind to do this.

Источник статьи: http://www.mathworks.com/help/matlab/math/array-indexing.html

Документация

Найдите индексы и значения ненулевых элементов

Синтаксис

Описание

k = find( X ) возвращает вектор, содержащий линейные индексы каждого ненулевого элемента в массиве X .

Если X вектор, затем find возвращает вектор с той же ориентацией как X .

Если X многомерный массив, затем find возвращает вектор-столбец линейных индексов результата.

k = find( X , n ) возвращает первый n индексы, соответствующие ненулевым элементам в X .

k = find( X , n , direction ) , где direction ‘last’ , находит последний n индексы, соответствующие ненулевым элементам в X . Значение по умолчанию для direction ‘first’ , который находит первый n индексы, соответствующие ненулевым элементам.

[ row , col ] = find( ___ ) возвращает индексы строки и столбца каждого ненулевого элемента в массиве X использование любого из входных параметров в предыдущих синтаксисах.

[ row , col , v ] = find( ___ ) также возвращает векторный v , который содержит ненулевые элементы X .

Примеры

Нулевые и ненулевые элементы в матрице

Найдите ненулевые элементы в 3х3 матрице.

Используйте логический not оператор на X определять местоположение нулей.

Элементы, удовлетворяющие условие

Найдите первые пять элементов, которые меньше 10 в матрице магического квадрата 4 на 4.

Просмотрите соответствующие элементы X .

Элементы, равные определенным значениям

Чтобы найти определенное целочисленное значение, используйте == оператор. Например, найдите элемент равным 13 в 1 10 векторе из нечетных целых чисел.

Чтобы найти значение нецелого числа, используйте значение допуска на основе своих данных. В противном случае результатом иногда является пустая матрица из-за ошибки округления с плавающей точкой.

В последний раз несколько ненулевых элементов

Создайте 6 6 матрицу магического квадрата со всеми нечетно индексированными равными нулю элементами.

Найдите последние четыре ненуля.

Элементы, удовлетворяющие несколько условий

Найдите первые три элемента в матрице 4 на 4, которые больше 0 и меньше, чем 10 . Задайте два выходных параметров, чтобы возвратить индексы строки и столбца в элементы.

Первой инстанцией является X(2,1) , который является 8 .

Индексы и значения для ненулевых элементов

Найдите ненулевые элементы в 3х3 матрице. Задайте три выходных параметров, чтобы возвратить индексы строки, индексы столбца и значения элемента.

Индексы многомерного массива

Найдите ненулевые элементы в 4 2 3 массивами. Задайте два выходных параметров, row и col , возвратить индексы строки и столбца ненулевых элементов. Когда вход является многомерным массивом ( N > 2 Поиск возвращает col как линейный индекс по N-1 последующие измерения X .

Входные параметры

X — Входной массив
скаляр | вектор | матрица | многомерный массив

Входной массив, заданный как скалярный, векторный, матричный или многомерный массив.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
Поддержка комплексного числа: Да

n — Количество ненулей, чтобы найти
положительный целочисленный скаляр

Количество ненулей, чтобы найти в виде положительного целочисленного скаляра. По умолчанию, find(X,n) ищет первый n ненулевые элементы в X .

direction — Поисковое направление
‘first’ (значение по умолчанию) | ‘last’

Поисковое направление в виде строки ‘first’ или ‘last’ . Ищите последний n ненулевые элементы в X использование find(X,n,’last’) .

Выходные аргументы

k — Индексы к ненулевым элементам
вектор

Индексы к ненулевым элементам, возвращенным как вектор.

Если X вектор-строка, затем k также вектор-строка. В противном случае, k вектор-столбец.

k вектор пустой строки или вектор пустого столбца когда X пустой массив или не имеет никаких ненулевых элементов.

find использует соглашение что k пустой матричный [] когда X пустой матричный [] .

Можно возвратить ненулевые значения в X использование X(k) .

row — Индексы строки
вектор

Индексы строки, возвращенные как вектор. Вместе, row и col задайте X(row,col) индексы, соответствующие ненулевым элементам в X .

col — Индексы столбца
вектор

Индексы столбца, возвращенные как вектор. Вместе, row и col задайте X(row,col) индексы, соответствующие ненулевым элементам в X .

Если X многомерный массив с N > 2 , затем col линейный индекс по N-1 последующие измерения X . Это сохраняет отношение X(row(i),col(i)) == v(i) .

v — Ненулевые элементы X
вектор

Ненулевые элементы X , возвращенный как вектор.

Больше о

Линейные индексы

Линейный индекс позволяет использованию одного индекса индексировать в массив, такой как A(k) MATLAB ® обрабатывает массив как вектор отдельного столбца с каждым столбцом, добавленным к нижней части предыдущего столбца. Таким образом, линейные порядковые номера элементы в столбцах сверху донизу, слева направо.

Например, рассмотрите 3х3 матрицу. Можно сослаться на A(2,2) элемент с A(5) , и A(2,3) элемент с A(8) . Линейный индекс изменяется в зависимости от размера массива; A(5) возвращает по-другому расположенный элемент для 3х3 матрицы, чем это делает для матрицы 4 на 4.

sub2ind и ind2sub функции полезны в преобразовании между индексами и линейными индексами.

Советы

Чтобы найти элементы массива, которые удовлетворяют условию, используйте find в сочетании с выражением отношения. Например, find(X возвращает линейные индексы в элементы в X это меньше 5 .

Непосредственно найти элементы в X это удовлетворяет условию X , используйте X(X . Избегайте вызовов функции как X(find(X , которые излишне используют find на логической матрице.

Когда вы выполняете find с реляционной операцией как X>1 , важно помнить, что результатом реляционной операции является логическая матрица единиц и нулей. Например, команда [row,col,v] = find(X>1) возвращает вектор-столбец логического 1 TRUE ) значения для v .

Индексы строки и столбца, row и col , связаны с линейными индексами в k k = sub2ind(size(X),row,col) .

Расширенные возможности

«Высокие» массивы
Осуществление вычислений с массивами, которые содержат больше строк, чем помещается в памяти.

Указания и ограничения по применению:

X должен быть высокий вектор-столбец.

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Указания и ограничения по применению:

Если вход переменного размера становится вектором-строкой во время выполнения, то концы генерации кода с ошибкой. Это ограничение не применяется, когда вход является скаляром или является вектором-строкой переменной длины.

Для входных параметров переменного размера форма пустых выходных параметров (0 на 0, 0 1, или 1 на 0) зависит от верхних границ размера входа. Когда входной массив является скаляром или [] во время выполнения, выход не может совпадать с MATLAB. Если вход является вектором-строкой переменной длины, то размер пустого выхода 1 на 0. В противном случае размер 0 1.

Сгенерированный код всегда возвращает вектор переменной длины. Даже когда вы предоставляете выходному вектору k , выход не является фиксированным размером, потому что выход может содержать меньше, чем k элементы. Например, find(x,1) возвращает вектор переменной длины с элементами единицы или нули.

Основанная на потоке среда
Запустите код в фоновом режиме с помощью MATLAB® backgroundPool или ускорьте код с Parallel Computing Toolbox™ ThreadPool .

Эта функция полностью поддерживает основанные на потоке среды. Для получения дополнительной информации смотрите функции MATLAB Запуска в Основанной на потоке Среде.

Массивы графического процессора
Ускорьте код путем работы графического процессора (GPU) с помощью Parallel Computing Toolbox™.

Эта функция полностью поддерживает массивы графического процессора. Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox) .

Распределенные массивы
Большие массивы раздела через объединенную память о вашем кластере с помощью Parallel Computing Toolbox™.

Эта функция полностью поддерживает распределенные массивы. Для получения дополнительной информации смотрите функции MATLAB Запуска с Распределенными Массивами (Parallel Computing Toolbox) .

Источник статьи: http://docs.exponenta.ru/matlab/ref/find.html

Matlab как найти индекс элемента матрицы

Find indices and values of nonzero elements

Syntax

Description

k = find( X ) returns a vector containing the linear indices of each nonzero element in array X .

If X is a vector, then find returns a vector with the same orientation as X .

If X is a multidimensional array, then find returns a column vector of the linear indices of the result.

k = find( X , n ) returns the first n indices corresponding to the nonzero elements in X .

k = find( X , n , direction ) , where direction is ‘last’ , finds the last n indices corresponding to nonzero elements in X . The default for direction is ‘first’ , which finds the first n indices corresponding to nonzero elements.

[ row , col ] = find( ___ ) returns the row and column subscripts of each nonzero element in array X using any of the input arguments in previous syntaxes.

[ row , col , v ] = find( ___ ) also returns vector v , which contains the nonzero elements of X .

Examples

Zero and Nonzero Elements in Matrix

Find the nonzero elements in a 3-by-3 matrix.

Use the logical not operator on X to locate the zeros.

Elements Satisfying a Condition

Find the first five elements that are less than 10 in a 4-by-4 magic square matrix.

View the corresponding elements of X .

Elements Equal to Specific Values

To find a specific integer value, use the == operator. For instance, find the element equal to 13 in a 1-by-10 vector of odd integers.

To find a noninteger value, use a tolerance value based on your data. Otherwise, the result is sometimes an empty matrix due to floating-point roundoff error.

Last Several Nonzero Elements

Create a 6-by-6 magic square matrix with all of the odd-indexed elements equal to zero.

Locate the last four nonzeros.

Elements Satisfying Multiple Conditions

Find the first three elements in a 4-by-4 matrix that are greater than 0 and less than 10 . Specify two outputs to return the row and column subscripts to the elements.

The first instance is X(2,1) , which is 8 .

Subscripts and Values for Nonzero Elements

Find the nonzero elements in a 3-by-3 matrix. Specify three outputs to return the row subscripts, column subscripts, and element values.

Subscripts of Multidimensional Array

Find the nonzero elements in a 4-by-2-by-3 array. Specify two outputs, row and col , to return the row and column subscripts of the nonzero elements. When the input is a multidimensional array ( N > 2 ), find returns col as a linear index over the N-1 trailing dimensions of X .

Input Arguments

X — Input array
scalar | vector | matrix | multidimensional array

Input array, specified as a scalar, vector, matrix, or multidimensional array.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
Complex Number Support: Yes

n — Number of nonzeros to find
positive integer scalar

Number of nonzeros to find, specified as a positive integer scalar. By default, find(X,n) looks for the first n nonzero elements in X .

direction — Search direction
‘first’ (default) | ‘last’

Search direction, specified as the string ‘first’ or ‘last’ . Look for the last n nonzero elements in X using find(X,n,’last’) .

Output Arguments

k — Indices to nonzero elements
vector

Indices to nonzero elements, returned as a vector.

If X is a row vector, then k is also a row vector. Otherwise, k is a column vector.

k is an empty row vector or empty column vector when X is an empty array or has no nonzero elements.

find uses the convention that k is an empty matrix [] when X is an empty matrix [] .

You can return the nonzero values in X using X(k) .

row — Row subscripts
vector

Row subscripts, returned as a vector. Together, row and col specify the X(row,col) subscripts corresponding to the nonzero elements in X .

col — Column subscripts
vector

Column subscripts, returned as a vector. Together, row and col specify the X(row,col) subscripts corresponding to the nonzero elements in X .

If X is a multidimensional array with N > 2 , then col is a linear index over the N-1 trailing dimensions of X . This preserves the relation X(row(i),col(i)) == v(i) .

v — Nonzero elements of X
vector

Nonzero elements of X , returned as a vector.

More About

Linear Indices

A linear index allows use of a single subscript to index into an array, such as A(k) . MATLAB ® treats the array as a single column vector with each column appended to the bottom of the previous column. Thus, linear indexing numbers the elements in the columns from top to bottom, left to right.

For example, consider a 3-by-3 matrix. You can reference the A(2,2) element with A(5) , and the A(2,3) element with A(8) . The linear index changes depending on the size of the array; A(5) returns a differently located element for a 3-by-3 matrix than it does for a 4-by-4 matrix.

The sub2ind and ind2sub functions are useful in converting between subscripts and linear indices.

To find array elements that meet a condition, use find in conjunction with a relational expression. For example, find(X returns the linear indices to the elements in X that are less than 5 .

To directly find the elements in X that satisfy the condition X , use X(X . Avoid function calls like X(find(X , which unnecessarily use find on a logical matrix.

When you execute find with a relational operation like X>1 , it is important to remember that the result of the relational operation is a logical matrix of ones and zeros. For example, the command [row,col,v] = find(X>1) returns a column vector of logical 1 ( true ) values for v .

The row and column subscripts, row and col , are related to the linear indices in k by k = sub2ind(size(X),row,col) .

Extended Capabilities

Tall Arrays
Calculate with arrays that have more rows than fit in memory.

Usage notes and limitations:

X must be a tall column vector.

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Usage notes and limitations:

If a variable-size input becomes a row vector at run time, then code generation ends with an error. This limitation does not apply when the input is scalar or is a variable-length row vector.

For variable-size inputs, the shape of empty outputs (0-by-0, 0-by-1, or 1-by-0) depends on the upper bounds of the size of the input. When the input array is a scalar or [] at run time, the output might not match MATLAB. If the input is a variable-length row vector, then the size of an empty output is 1-by-0. Otherwise, the size is 0-by-1.

The generated code always returns a variable-length vector. Even when you provide the output vector k , the output is not fixed-size because the output can contain fewer than k elements. For example, find(x,1) returns a variable-length vector with one or zero elements.

Thread-Based Environment
Run code in the background using MATLAB® backgroundPool or accelerate code with Parallel Computing Toolbox™ ThreadPool .

This function fully supports thread-based environments. For more information, see Run MATLAB Functions in Thread-Based Environment.

GPU Arrays
Accelerate code by running on a graphics processing unit (GPU) using Parallel Computing Toolbox™.

This function fully supports GPU arrays. For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox) .

Distributed Arrays
Partition large arrays across the combined memory of your cluster using Parallel Computing Toolbox™.

This function fully supports distributed arrays. For more information, see Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox) .

Источник статьи: http://www.mathworks.com/help/matlab/ref/find.html

Документация

Найдите индексы и значения ненулевых элементов

Синтаксис

Описание

k = find( X ) возвращает вектор, содержащий линейные индексы каждого ненулевого элемента в массиве X .

Если X вектор, затем find возвращает вектор с той же ориентацией как X .

Если X многомерный массив, затем find возвращает вектор-столбец линейных индексов результата.

k = find( X , n ) возвращает первый n индексы, соответствующие ненулевым элементам в X .

k = find( X , n , direction ) , где direction ‘last’ , находит последний n индексы, соответствующие ненулевым элементам в X . Значение по умолчанию для direction ‘first’ , который находит первый n индексы, соответствующие ненулевым элементам.

[ row , col ] = find( ___ ) возвращает индексы строки и столбца каждого ненулевого элемента в массиве X использование любого из входных параметров в предыдущих синтаксисах.

[ row , col , v ] = find( ___ ) также возвращает векторный v , который содержит ненулевые элементы X .

Примеры

Нулевые и ненулевые элементы в матрице

Найдите ненулевые элементы в 3х3 матрице.

Используйте логический not оператор на X определять местоположение нулей.

Элементы, удовлетворяющие условие

Найдите первые пять элементов, которые меньше 10 в матрице магического квадрата 4 на 4.

Просмотрите соответствующие элементы X .

Элементы, равные определенным значениям

Чтобы найти определенное целочисленное значение, используйте == оператор. Например, найдите элемент равным 13 в 1 10 векторе из нечетных целых чисел.

Чтобы найти значение нецелого числа, используйте значение допуска на основе своих данных. В противном случае результатом иногда является пустая матрица из-за ошибки округления с плавающей точкой.

В последний раз несколько ненулевых элементов

Создайте 6 6 матрицу магического квадрата со всеми нечетно индексированными равными нулю элементами.

Найдите последние четыре ненуля.

Элементы, удовлетворяющие несколько условий

Найдите первые три элемента в матрице 4 на 4, которые больше 0 и меньше, чем 10 . Задайте два выходных параметров, чтобы возвратить индексы строки и столбца в элементы.

Первой инстанцией является X(2,1) , который является 8 .

Индексы и значения для ненулевых элементов

Найдите ненулевые элементы в 3х3 матрице. Задайте три выходных параметров, чтобы возвратить индексы строки, индексы столбца и значения элемента.

Индексы многомерного массива

Найдите ненулевые элементы в 4 2 3 массивами. Задайте два выходных параметров, row и col , возвратить индексы строки и столбца ненулевых элементов. Когда вход является многомерным массивом ( N > 2 Поиск возвращает col как линейный индекс по N-1 последующие измерения X .

Входные параметры

X — Входной массив
скаляр | вектор | матрица | многомерный массив

Входной массив, заданный как скалярный, векторный, матричный или многомерный массив.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
Поддержка комплексного числа: Да

n — Количество ненулей, чтобы найти
положительный целочисленный скаляр

Количество ненулей, чтобы найти в виде положительного целочисленного скаляра. По умолчанию, find(X,n) ищет первый n ненулевые элементы в X .

direction — Поисковое направление
‘first’ (значение по умолчанию) | ‘last’

Поисковое направление в виде строки ‘first’ или ‘last’ . Ищите последний n ненулевые элементы в X использование find(X,n,’last’) .

Выходные аргументы

k — Индексы к ненулевым элементам
вектор

Индексы к ненулевым элементам, возвращенным как вектор.

Если X вектор-строка, затем k также вектор-строка. В противном случае, k вектор-столбец.

k вектор пустой строки или вектор пустого столбца когда X пустой массив или не имеет никаких ненулевых элементов.

find использует соглашение что k пустой матричный [] когда X пустой матричный [] .

Можно возвратить ненулевые значения в X использование X(k) .

row — Индексы строки
вектор

Индексы строки, возвращенные как вектор. Вместе, row и col задайте X(row,col) индексы, соответствующие ненулевым элементам в X .

col — Индексы столбца
вектор

Индексы столбца, возвращенные как вектор. Вместе, row и col задайте X(row,col) индексы, соответствующие ненулевым элементам в X .

Если X многомерный массив с N > 2 , затем col линейный индекс по N-1 последующие измерения X . Это сохраняет отношение X(row(i),col(i)) == v(i) .

v — Ненулевые элементы X
вектор

Ненулевые элементы X , возвращенный как вектор.

Больше о

Линейные индексы

Линейный индекс позволяет использованию одного индекса индексировать в массив, такой как A(k) MATLAB ® обрабатывает массив как вектор отдельного столбца с каждым столбцом, добавленным к нижней части предыдущего столбца. Таким образом, линейные порядковые номера элементы в столбцах сверху донизу, слева направо.

Например, рассмотрите 3х3 матрицу. Можно сослаться на A(2,2) элемент с A(5) , и A(2,3) элемент с A(8) . Линейный индекс изменяется в зависимости от размера массива; A(5) возвращает по-другому расположенный элемент для 3х3 матрицы, чем это делает для матрицы 4 на 4.

sub2ind и ind2sub функции полезны в преобразовании между индексами и линейными индексами.

Советы

Чтобы найти элементы массива, которые удовлетворяют условию, используйте find в сочетании с выражением отношения. Например, find(X возвращает линейные индексы в элементы в X это меньше 5 .

Непосредственно найти элементы в X это удовлетворяет условию X , используйте X(X . Избегайте вызовов функции как X(find(X , которые излишне используют find на логической матрице.

Когда вы выполняете find с реляционной операцией как X>1 , важно помнить, что результатом реляционной операции является логическая матрица единиц и нулей. Например, команда [row,col,v] = find(X>1) возвращает вектор-столбец логического 1 TRUE ) значения для v .

Индексы строки и столбца, row и col , связаны с линейными индексами в k k = sub2ind(size(X),row,col) .

Расширенные возможности

«Высокие» массивы
Осуществление вычислений с массивами, которые содержат больше строк, чем помещается в памяти.

Указания и ограничения по применению:

X должен быть высокий вектор-столбец.

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Указания и ограничения по применению:

Если вход переменного размера становится вектором-строкой во время выполнения, то концы генерации кода с ошибкой. Это ограничение не применяется, когда вход является скаляром или является вектором-строкой переменной длины.

Для входных параметров переменного размера форма пустых выходных параметров (0 на 0, 0 1, или 1 на 0) зависит от верхних границ размера входа. Когда входной массив является скаляром или [] во время выполнения, выход не может совпадать с MATLAB. Если вход является вектором-строкой переменной длины, то размер пустого выхода 1 на 0. В противном случае размер 0 1.

Сгенерированный код всегда возвращает вектор переменной длины. Даже когда вы предоставляете выходному вектору k , выход не является фиксированным размером, потому что выход может содержать меньше, чем k элементы. Например, find(x,1) возвращает вектор переменной длины с элементами единицы или нули.

Основанная на потоке среда
Запустите код в фоновом режиме с помощью MATLAB® backgroundPool или ускорьте код с Parallel Computing Toolbox™ ThreadPool .

Эта функция полностью поддерживает основанные на потоке среды. Для получения дополнительной информации смотрите функции MATLAB Запуска в Основанной на потоке Среде.

Массивы графического процессора
Ускорьте код путем работы графического процессора (GPU) с помощью Parallel Computing Toolbox™.

Эта функция полностью поддерживает массивы графического процессора. Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox) .

Распределенные массивы
Большие массивы раздела через объединенную память о вашем кластере с помощью Parallel Computing Toolbox™.

Эта функция полностью поддерживает распределенные массивы. Для получения дополнительной информации смотрите функции MATLAB Запуска с Распределенными Массивами (Parallel Computing Toolbox) .

Источник статьи: http://docs.exponenta.ru/matlab/ref/find.html?searchHighlight=find

Документация

Найдите индексы и значения ненулевых элементов

Синтаксис

Описание

k = find( X ) возвращает вектор, содержащий линейные индексы каждого ненулевого элемента в массиве X .

Если X вектор, затем find возвращает вектор с той же ориентацией как X .

Если X многомерный массив, затем find возвращает вектор-столбец линейных индексов результата.

Если X не содержит ненулевых элементов или пуст, затем find возвращает пустой массив.

k = find( X , n ) возвращает первый n индексы, соответствующие ненулевым элементам в X .

k = find( X , n , direction ) , где direction ‘last’ , находит последний n индексы, соответствующие ненулевым элементам в X . Значение по умолчанию для direction ‘first’ , который находит первый n индексы, соответствующие ненулевым элементам.

[ row , col ] = find( ___ ) возвращает индексы строки и столбца каждого ненулевого элемента в массиве X использование любого из входных параметров в предыдущих синтаксисах.

[ row , col , v ] = find( ___ ) также возвращает векторный v , который содержит ненулевые элементы X .

Примеры

Нулевые и ненулевые элементы в матрице

Найдите ненулевые элементы в 3х3 матрице.

Используйте логический not оператор на X определять местоположение нулей.

Элементы, удовлетворяющие условие

Найдите первые пять элементов, которые меньше 10 в матрице магического квадрата 4 на 4.

Просмотрите соответствующие элементы X .

Элементы, равные определенным значениям

Чтобы найти определенное целочисленное значение, используйте == оператор. Например, найдите элемент равным 13 в 1 10 векторе нечетных целых чисел.

Чтобы найти значение нецелого числа, используйте значение допуска на основе своих данных. В противном случае результатом иногда является пустая матрица из-за ошибки округления с плавающей точкой.

В последний раз несколько ненулевых элементов

Создайте 6 6 матрицу магического квадрата со всеми нечетно индексированными равными нулю элементами.

Найдите последние четыре ненуля.

Элементы, удовлетворяющие несколько условий

Найдите первые три элемента в матрице 4 на 4, которые больше 0 и меньше, чем 10 . Задайте два выходных параметров, чтобы возвратить индексы строки и столбца в элементы.

Первой инстанцией является X(2,1) , который является 8 .

Индексы и значения для ненулевых элементов

Найдите ненулевые элементы в 3х3 матрице. Задайте три выходных параметров, чтобы возвратить индексы строки, индексы столбца и значения элемента.

Индексы многомерного массива

Найдите ненулевые элементы в 4 2 3 массивами. Задайте два выходных параметров, row и col , возвратить индексы строки и столбца ненулевых элементов. Когда вход является многомерным массивом ( N > 2 Поиск возвращает col как линейный индекс по N-1 последующие измерения X .

Входные параметры

X — Входной массив
скаляр | вектор | матрица | многомерный массив

Входной массив, заданный как скалярный, векторный, матричный или многомерный массив. Если X пустой массив или не имеет никаких ненулевых элементов, затем k пустой массив.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
Поддержка комплексного числа: Да

n — Количество ненулей, чтобы найти
положительный целочисленный скаляр

Количество ненулей, чтобы найти, заданный как положительный целочисленный скаляр. По умолчанию, find(X,n) ищет первый n ненулевые элементы в X .

direction — Поисковое направление
‘first’ (значение по умолчанию) | ‘last’

Поисковое направление, заданное как строка ‘first’ или ‘last’ . Ищите последний n ненулевые элементы в X использование find(X,n,’last’) .

Выходные аргументы

k — Индексы к ненулевым элементам
вектор

Индексы к ненулевым элементам, возвращенным как вектор. Если X вектор-строка, затем k также вектор-строка. В противном случае, k вектор-столбец. k пустой массив когда X пустой массив или не имеет никаких ненулевых элементов.

Можно возвратить ненулевые значения в X использование X(k) .

row — Индексы строки
вектор

Индексы строки, возвращенные как вектор. Вместе, row и col задайте X(row,col) индексы, соответствующие ненулевым элементам в X .

col — Индексы столбца
вектор

Индексы столбца, возвращенные как вектор. Вместе, row и col задайте X(row,col) индексы, соответствующие ненулевым элементам в X .

Если X многомерный массив с N > 2 , затем col линейный индекс по N-1 последующие измерения X . Это сохраняет отношение X(row(i),col(i)) == v(i) .

v — Ненулевые элементы X
вектор

Ненулевые элементы X , возвращенный как вектор.

Больше о

Линейные индексы

Линейный индекс позволяет использованию одного индекса индексировать в массив, такой как A(k) . MATLAB ® обрабатывает массив как вектор отдельного столбца с каждым столбцом, добавленным к нижней части предыдущего столбца. Таким образом, линейные порядковые номера элементы в столбцах сверху донизу, слева направо.

Например, рассмотрите 3х3 матрицу. Можно сослаться на A(2,2) элемент с A(5) , и A(2,3) элемент с A(8) . Линейный индекс изменяется в зависимости от размера массива; A(5) возвращает по-другому расположенный элемент для 3х3 матрицы, чем это делает для матрицы 4 на 4.

sub2ind и ind2sub функции полезны в преобразовании между индексами и линейными индексами.

Советы

Чтобы найти элементы массива, которые удовлетворяют условию, используйте find в сочетании с выражением отношения. Например, find(X возвращает линейные индексы в элементы в X это меньше 5 .

Непосредственно найти элементы в X это удовлетворяет условию X , используйте X(X . Избегайте вызовов функции как X(find(X , которые излишне используют find на логической матрице.

Когда вы выполняете find с реляционной операцией как X>1 , важно помнить, что результатом реляционной операции является логическая матрица единиц и нулей. Например, команда [row,col,v] = find(X>1) возвращает вектор-столбец логического 1 TRUE ) значения для v .

Индексы строки и столбца, row и col , связаны с линейными индексами в k k = sub2ind(size(X),row,col) .

Расширенные возможности

«Высокие» массивы
Осуществление вычислений с массивами, которые содержат больше строк, чем помещается в памяти.

Указания и ограничения по применению:

X должен быть высокий вектор-столбец.

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Указания и ограничения по применению:

Если вход переменного размера становится вектором-строкой во время выполнения, то концы генерации кода с ошибкой. Это ограничение не применяется, когда вход является скаляром или является вектором-строкой переменной длины.

Для входных параметров переменного размера форма пустых выходных параметров (0 на 0, 0 1, или 1 на 0) зависит от верхних границ размера входа. Когда входной массив является скаляром или [] во время выполнения, выход не может совпадать с MATLAB. Если вход является вектором-строкой переменной длины, то размер пустого выхода 1 на 0. В противном случае размер 0 1.

Сгенерированный код всегда возвращает вектор переменной длины. Даже когда вы предоставляете выходному вектору k , выход не является фиксированным размером, потому что выход может содержать меньше, чем k элементы. Например, find(x,1) возвращает вектор переменной длины с элементами единицы или нули.

Массивы графического процессора
Ускорьте код путем работы графического процессора (GPU) с помощью Parallel Computing Toolbox™.

Эта функция полностью поддерживает массивы графического процессора. Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).

Распределенные массивы
Большие массивы раздела через объединенную память о вашем кластере с помощью Parallel Computing Toolbox™.

Эта функция полностью поддерживает распределенные массивы. Для получения дополнительной информации смотрите функции MATLAB Запуска с Распределенными Массивами (Parallel Computing Toolbox).

Источник статьи: http://docs.exponenta.ru/R2019b/matlab/ref/find.html

Документация

В MATLAB® существует три первичных подхода к доступу к элементам массива на основе их местоположения (индекс) в массиве. Эти подходы индексируют положением, линейной индексацией и логической индексацией.

Индексация с положениями элемента

Наиболее распространенный способ состоит в том, чтобы явным образом задать индексы элементов. Например, чтобы получить доступ к одному элементу матрицы, задайте номер строки, сопровождаемый номером столбца элемента.

e элемент в 3,2 положениях (третья строка, второй столбец) A .

Можно также сослаться на несколько элементов за один раз путем определения их индексов в векторе. Например, получите доступ к первым и третьим элементам второй строки A .

К элементам доступа в области значений строк или столбцов, используйте colon . Например, получите доступ к элементам в первом через третью строку и втором через четвертый столбец A .

Альтернативный способ вычислить r должен использовать ключевое слово end задавать второй столбец через последний столбец. Этот подход позволяет вам задать последний столбец, не зная точно, сколько столбцов находится в A .

Если вы хотите получить доступ ко всем строкам или столбцам, используйте оператор двоеточия отдельно. Например, возвратите целый третий столбец A .

В общем случае можно использовать индексацию, чтобы получить доступ к элементам любого массива в MATLAB независимо от его типа данных или размерностей. Например, непосредственно получите доступ к столбцу datetime массив.

Для более многомерных массивов расширьте синтаксис, чтобы совпадать с измерениями массива. Рассмотрите случайные 3 3х3 числовым массивом. Доступ к элементу во второй строке, третьем столбце и первом листе массива.

Для получения дополнительной информации о работе с многомерными массивами смотрите Многомерные массивы.

Индексация с одним индексом

Другой метод для доступа к элементам массива должен использовать только один индекс, независимо от размера или размерностей массива. Этот метод известен как линейную индексацию . В то время как MATLAB отображает массивы согласно их заданным размерам и формам, они на самом деле хранятся в памяти как отдельный столбец элементов. Хороший способ визуализировать эту концепцию с матрицей. В то время как следующий массив отображен как 3х3 матрица, MATLAB хранит его как отдельный столбец, составленный из столбцов A добавленный один за другим. Сохраненный вектор содержит последовательность элементов 12 , 45 , 33 , 36 , 29 , 25 , 91 , 48 , 11 , и может быть отображен с помощью одного двоеточия.

Например, 3,2 элемента A 25 , и можно получить доступ к нему с помощью синтаксиса A(3,2) . Можно также получить доступ к этому элементу с помощью синтаксиса A(6) , начиная с 25 шестой элемент сохраненной векторной последовательности.

В то время как линейная индексация может быть менее интуитивной визуально, это может быть мощно для выполнения определенных расчетов, которые не зависят от размера или формы массива. Например, можно легко суммировать все элементы A не имея необходимость предоставлять второй аргумент sum функция.

sub2ind и ind2sub функции помогают преобразовать между индексами исходного массива и их линейной версией. Например, вычислите линейный индекс 3,2 элементов A .

Преобразуйте от линейного индекса назад к его форме строки и столбца.

Индексация с логическими значениями

Используя истинные и ложные логические индикаторы другой полезный способ индексировать в массивы, особенно при работе с условными операторами. Например, скажите, что вы хотите знать если элементы матричного A меньше соответствующих элементов другого матричного B . Меньше оператор возвращает логический массив, элементами которого является 1 когда элемент в A меньше, чем соответствующий элемент в B .

Теперь, когда вы знаете местоположения элементов, удовлетворяющих условию, можно смотреть отдельные значения с помощью ind как массив индекса. MATLAB совпадает с местоположениями значения 1 в ind к соответствующим элементам A и B , и перечисляет их значения в вектор-столбце.

MATLAB «является» функциями, также возвращают логические массивы, которые указывают, какие элементы входа соответствуют определенному условию. Например, проверяйте который элементы string вектор избегает использовать ismissing функция.

Предположим, что вы хотите найти значения элементов, которые не отсутствуют. Используйте

оператор с вектором индекса ind сделать это.

Для большего количества примеров, использующих логическую индексацию, смотрите, Находят Элементы массива, Которые Удовлетворяют Условию.

Похожие темы

Открытый пример

У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?

Документация MATLAB

Поддержка

© 1994-2021 The MathWorks, Inc.

1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.

2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.

3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.

4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.

5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.

Источник статьи: http://docs.exponenta.ru/matlab/math/array-indexing.html

Matlab find Index

Matlab Tutorial

MATLAB Certification Course

R Programming Course

All in One Data Science Courses

Introduction to Matlab find Index

Matlab finds the index function used to remit a vector containing the linear indices of each nonzero element in the array. For Matlab find the index “Find” statement is used. For example, D = find(Y) remits a vector containing the linear indices of each nonzero element in array Y. If Y is a vector, then find returns a vector with the same orientation as Y. If Y is a multidimensional array, then find returns a column vector of the linear indices of the result. If Y contains no nonzero elements or is empty, then find returns an empty array.

Hadoop, Data Science, Statistics & others

  • D = find(Y)
  • D = find(Y,n)
  • D = find(Y, n, direction )
  • [row, col] = find (___)
  • [row, col, v] = find (___)

How to Do Matlab Fscanf?

Find the function used to find indices and values of nonzero value. For finding indices and values of nonzero elements, we need to take all elements into a variable and use proper syntax.

The steps to find indices and values of nonzero value using find the statement:-

Step 1: We need to take all elements into a variable

Step 2: Then, we use a find statement with proper syntax to find indices and values of the nonzero element.

Examples of Matlab find Index

Given below are the examples of Matlab find Index:

Example #1

Let us see an example related to find function, find function used to find indices and values of nonzero value. So in this example, we take a 3-by-3 matrix, and this matrix takes into a variable ‘Y’. So index 1 starts with row 1 and column one, and the next index value is 2 corresponds to row 2 and column one, then the same sequence will continue till the last index value; in our example, the last index value is 9 because we take 3-by-3 matrix. So now we use a find function; we take to find(Y); this command displays the indices of nonzero values like in our examples non zero values are 1, 2, 5, 7 and 4 the find displays the indices values of these numbers, and then we take a complement of 1st command that is found (

Y), this command is used to display the indices value of zero values present in the matrix so that indices are stored in d2 variable.

clc;
close all;
Y = [1 0 2; 0 5 7; 0 0 4] D = find(Y)
D2 = find(

As we saw the result, the Y variable shows the 3 by 3 matrix, then the D stores the indices values of nonzero values present at the Y matrix and the D2 stores the value of indices of a zero present in the matrix. The result of D and D2 shows in n*1 format, where n is the number of rows.

Example #2

In this example, we take a 5 by 5 matrix using a magic function; magic creates a matrix; if we take magic(n), it creates a by n matrix; the matrix number is 1 to n^2 with equal rows and columns. So in our example, we take magic(5) which means it creates a 5 by 5 matrix; the numbers are 1 to 25 because 5^2. This matrix we assign to the Y variable. Then now, we use a find function, find(Y clc;
clear all;
close all;
Y = magic(5)
D = find(Y

Example #3

Let us see another example related to find function, as we know to find function used to find indices and values of nonzero value. So in this example, we take a number in the range of 10 to 30 with the difference of 3, and these elements take into a variable ‘Y’ the numbers are 13, 16, 19, 22, and 25. Now we find a specific integer value for that we use a == operator, so we write command as find(Y==22) then it displays the index value where 22 is present. If that number is not present in that row, then it returns an empty.

clc;
clear all;
close all;
Y = 10:3:30
K1 = find(Y==22)
K2 = find(Y==20)

Example #4

Let us see an example for find function, as we know to find function used to find indices and values of nonzero value. So in this example, we take a number in the range of 1 to 3 with the difference of 0.3, and these elements take into a variable ‘Y’ the numbers are 1.3, 1.6, 1.9, 2.2, 2.5, and 28. Now we find a specific value for that we use a == operator, so we write command as find(Y==1.6) then it displays the index value where 1.6 is present. If that number is not present in that row, then it returns an empty.

clc;
clear all;
close all;
Y = 1:0.3:3
K1 = find(Y== 1.6)

Conclusion

In this article, we saw the concept of Matlab find the index. Basically, Matlab finds index is used for indicating values of the nonzero element. Then saw syntax related to Matlab find index statements and how it’s used in Matlab code. Also, we saw some examples related to Matlab’s find index statement.

Recommended Articles

This is a guide to Matlab find Index. Here we discuss How to Do Matlab Fscanf, and Examples of Matlab find Index along with the codes and outputs. You may also have a look at the following articles to learn more –

Источник статьи: http://www.educba.com/matlab-find-index/

Индексы элементов матриц

Элемент в строке i и столбце j матрицы А обозначается A(i,j). Например, A(4,2) — это число в четвертой строке и втором столбце. Для нашего магического квадрата A(4,2) =15. Таким образом, можно вычислить сумму элементов в четвер­том столбце матрицы А, набрав:

Однако это не самый лучший способ суммирования отдельной строки. Также возможно обращаться к элементам матрицы через один индекс, A(k). В этом случае массив рассматривается как длинный вектор, сформированный из столбцов исходной матрицы.

Так, для магического квадрата, A(8) — это другой способ ссылаться на значение 15, хранящееся в A(4,2).

Если использовать значение элемента вне матрицы, Matlab выдаст ошибку:

. Index exceeds matrix dimensions.

С другой стороны, если сохранить значение вне матрицы, то размер матрицы увеличивается:

Оператор двоеточия. Двоеточие : — это один из наиболее важных операторов Matlab. Он проявляется в различных формах. Выражение:

— это вектор-строка, содержащая целые числа от 1 до 10:

Для получения обратного интервала:

0 0.7854 1.5708 2.3562 3.1416

Индексное выражение, включая двоеточие, относится к части матрицы: A(1:k, j) это первые k элементов j-го столбца матрицы А. Так:

вычисляет сумму четвертой строки. Но есть и лучший способ. Двоеточие, само по себе, обращается ко всем элементам в строке и столбце матрицы, а слово end — к последней строке или столбцу. Так:

вычисляет сумму элементов в последнем столбце матрицы А:

Почему магическая сумма квадрата равна 34? Если целые числа от 1 до 16 отсортированы в четыре группы с равными суммами, эта сумма должна быть:

Матричные функции линейной алгебры

Математические операции, определенные на матрицах являются объектом линейной алгебры (табл. 1).

Матричные функции линейной алгебры

det(A) — возвращает определитель квадратной матрицы A.

rank(A) — возвращает ранг матрицы A.

trace(A) — возвращает след матрицы A.

inv(A) — возвращает матрицу, обратную квадратной матрицы A.

size(A) — возвращает вектор-строку, содержащую количество строк и столбцов в массиве A.

length(X) — возвращает длину вектора X.

max(A) — возвращает вектор-строку, содержащую значения максимальных элементов в столбцах матрицы А.

min(A) — возвращает вектор-строку, содержащую значения минимальных элементов в столбцах матрицы А.

Массивы

Когда мы выходим из мира линейной алгебры, матрицы становятся двумерными численными массивами. Арифметические операции на массивах производятся поэлементно. Это означает, что суммирование и вычитание являются одинако­выми операциями для матриц и массивов, а умножение для них различно. Matlab использует точку, как часть записи для операции умножения массивов.

Список операторов включает в себя:

Если магический квадрат Дюрера умножить на себя по правилам умножения массивов:

результатом будет массив, содержащий квадраты целых чисел от 1 до 16:

Источник статьи: http://studfile.net/preview/6022867/page:6/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *