2015-01-26 4 views
0

Я пытаюсь перевести код c в MATLAB, и я столкнулся с некоторым кодом, который я не понимаю. В частности, есть переменная определяется как:Добавление одного к вектору

static float *lpfdata; 

Это получает назначение во время вызова функции к:

envelope_old(&fdata[0], lpfdata, winlength, samprate, BW); 

, который принимает входные данные как:

void envelope_old (float *fdata, float *lpfdata, int nsamps, int samprate, 

поплавок среза)

Внутри envelope_old lpfdata ссылается как вектор, которому присваиваются значения в цикле в формате «lpfdata[i] = ... "где i - индексная переменная в цикле.

Позже, вызов функции в формате:

downsample(lpfdata+1, dwndata, winlength, downby); 

называется. Что означает «1» в этом случае?

ответ

0

При работе с указателем lpfdata[n] и lpfdata+n одинаковы - они добавляют n * sizeof(*lpfdata) к необработанному указателю и получают доступ к памяти по этому адресу.

В этом случае lpfdata указывает на элементы типа float, так что sizeof(*lpfdata) == sizeof(float)