mxCalcSingleSubscript (C и Фортран)

Сместите от первого элемента до желаемого элемента

Синтаксис C

#include "matrix.h"
mwIndex mxCalcSingleSubscript(const mxArray *pm, mwSize nsubs, mwIndex *subs);

Синтаксис языка ФОРТРАН

#include "fintrf.h"
mwIndex mxCalcSingleSubscript(pm, nsubs, subs)
mwPointer pm
mwSize nsubs
mwIndex subs

Аргументы

pm

Указатель на mxArray

nsubs

Число элементов в массиве subs. Как правило, вы устанавливаете nsubs, равный количеству размерностей в mxArray, на который указывает pm.

нижние индексы

Массив целых чисел. Каждое значение в массиве указывает индекс той размерности. В Синтаксисе C значение в subs[0] указывает индекс строки, и значение в subs[1] указывает индекс столбца. Используйте основанную на нуле индексацию для индексов. Например, чтобы выразить стартовый элемент двумерного mxArray в subs, установите subs[0] на 0 и subs[1] к 0.

В Cинтаксисе языка Фортран значение в subs(1) указывает индекс строки, и значение в subs(2) указывает индекс столбца. Используйте индексацию на основе 1 для индексов. Например, чтобы выразить стартовый элемент двумерного mxArray в subs, установите subs(1) на 1 и subs(2) к 1.

Возвращается

Число элементов или index, между запуском mxArray и указанным индексом. Этот номер является линейным индексом, эквивалентным из индексов. Много Матричных Библиотечных подпрограмм (например, mxGetField) требуют индекса в качестве аргумента.

Если subs описывает стартовый элемент mxArray, mxCalcSingleSubscript возвращается 0. Если subs описывает итоговый элемент mxArray, mxCalcSingleSubscript возвращает N-1 (где N является общим количеством элементов).

Описание

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

Например, учитывая индекс как (5,7), mxCalcSingleSubscript возвращает расстояние от первого элемента массива к элементу (5,7). Помните, что тип данных mxArray внутренне представляет все элементы данных в одномерном массиве, неважно, сколько размерностей MATLAB® mxArray, кажется, имеет. Для примеров, показывающих внутреннее представление, смотрите Хранение данных.

Избегайте использования mxCalcSingleSubscript, чтобы пересечь элементы массива. В C более эффективно найти начальный адрес массива и затем использовать указатель, автопостепенно увеличивающийся, чтобы получить доступ к последовательным элементам. Например, чтобы найти начальный адрес числового массива, вызовите одну из введенных функций доступа к данным, например, mxGetDoubles или mxGetComplexDoubles.

Примеры

Смотрите эти примеры в matlabroot/extern/examples/mx:

Смотрите также

mxGetCell, mxSetCell

Представлено до R2006a