У меня есть 1D-массив float64 arr[60]
, используемый для хранения значений напряжения из DAQ. Массив заполняется так:1D массив передан функции как 2D-массив
10 SAMPLES_PER_CHANNEL, 6 CHANNELS, grouped by channel
transducer_0 transducer_1 ... transducer_6
[0, 1 ..., 9, 10, 11 ..., 19 ... 50, 51 ..., 59]
Я хотел бы хранить эти данные в 1D массив указателей и перейти к функции, определение которого является: bool func2(int samples, double* const* arr2)
[channel 0] [channel 1] [channel 5]
{val 0, val 1 ...val 9}, {val 10, val 11 ...val 19}, ...
Значения обновляются на ~ 5000 Гц и, как таковой, мне интересно, какие наиболее эффективные средства могут быть такими, чтобы я не копировал какие-либо данные.
Поскольку данные внутри arr хранятся в памяти одинаково для массива 1D или 2D, могу ли я просто нарисовать указатель?
Не можете использовать этот вектор? Легче манипулировать ... Просто напишите структуру, такую как 'struct Data {const char * channel; double val}; 'и добавьте это в вектор, и когда вам нужно просто вытащить нужные данные канала. – macroland
Вы могли бы наложить указатель ... но было бы проще объявить 2D-массив ('float64 arr [6] [10]' вместо 'float64 arr [60]'), в первую очередь. – Dmitri
Проблема заключается в том, что функция обратного вызова заполняет 1D-массив, и у меня нет доступа для изменения функции. –