Мне нужно найти способ загрузить массив Arrayfire из файла, файл имеет формат: ix iy iz val , где (ix, iy, iz) являются координатами, в которых должно быть значение, Val. Я открываю файл по способу C ++ (с GetLine и SO) и пробираю строку, правильно получаю индексы IX, iy, iz и значение, val
, прежде чем я начну итерацию файла, я создаю свой массив как обычный
af::array af_obj(Lx,Ly,Lz, f32);
< /code>
Затем, когда я итерации, я использую такую строку, чтобы сохранить значения: < /p>
af_obj( ix, iy ,iz ) = val
< /code>
Но массив неправильно сохраняет информацию, я имею в виду, если я делаю то же самое с простым тридимерным массивом, он правильно содержит информацию. (какая -то вид дискретизации для представления сферы, вся точка зрения, используйте этот массив для умножения другого массива (удерживающего поля скорости), поэтому, где солидно, скорость будет иметь нулевое значение) < /p>
Я пробовал другие способы, выравниваю данные в 1D -массиве и передаю его конструктору, но в лучшем случае. 300, ly = lz = 100) Но я не могу сделать то, что я хочу.
Я точно знаю, что файл содержит правильные данные, я генерирую этот файл из другого кода (если, возможно, изменение формата файла может помочь, скажите мне, я могу изменить его) < /p>
за чтение и ответы. Данные, которые я использую: < /p>
std::ofstream file;
file.open("solidRegion.dat");
for( int iz = 0 ; iz < this->Lz; iz++ ){
for( int iy = 0 ; iy < this->Ly; iy++){
for( int ix = 0 ; ix < this->Lx ; ix++){
file > z >> o;
af_obj(x,y,z) = o;
object[x][y][z] = o;
}
< /code>
Массив объектов представляет собой классический 3D 3D -массив C ++ (размеры LX, LY, LZ), и если данные правильно сохранены в этом массиве (объект), но не в объекте ArrayFire ... и я не знаю, почему.int *h_o;
h_o = new int[Lx*Ly*Lz];
int i = 0;
for ( int k = 0 ; k < Lz ; k++)
for( int ix = 0 ; ix < Lx ; ix++)
for( int j = 0 ; j < Ly ; j++)
{
h_o = object[ix][j][k];
i++;
}
af::array af_obj(Lx, Ly ,Lz , h_o);
< /code>
Зная, что de 3d объект [] [] [] Array имеет правильную информацию! < /p>
Но объект Arrayfire af_obj, как я уже сказал, массив представляет сферу, в лучшем случае объект Arrayfire Shod 3 Spheres (не понятие). Порядок вложенных форм имеет значение, но я попробовал все возможное сочетание XYZ, и, кажется, ничего не работает.
Подробнее здесь: https://stackoverflow.com/questions/357 ... -from-file
Массив ArrayFire MarrayFire из файла ⇐ C++
Программы на C++. Форум разработчиков
1753368029
Anonymous
Мне нужно найти способ загрузить массив Arrayfire из файла, файл имеет формат: [b] ix iy iz val [/b], где (ix, iy, iz) являются координатами, в которых должно быть значение, Val. Я открываю файл по способу C ++ (с GetLine и SO) и пробираю строку, правильно получаю индексы [b] IX, iy, iz [/b] и значение, [b] val [/b]
, прежде чем я начну итерацию файла, я создаю свой массив как обычный
af::array af_obj(Lx,Ly,Lz, f32);
< /code>
Затем, когда я итерации, я использую такую строку, чтобы сохранить значения: < /p>
af_obj( ix, iy ,iz ) = val
< /code>
Но массив неправильно сохраняет информацию, я имею в виду, если я делаю то же самое с простым тридимерным массивом, он правильно содержит информацию. (какая -то вид дискретизации для представления сферы, вся точка зрения, используйте этот массив для умножения другого массива (удерживающего поля скорости), поэтому, где солидно, скорость будет иметь нулевое значение) < /p>
Я пробовал другие способы, выравниваю данные в 1D -массиве и передаю его конструктору, но в лучшем случае. 300, ly = lz = 100) Но я не могу сделать то, что я хочу.
Я точно знаю, что файл содержит правильные данные, я генерирую этот файл из другого кода (если, возможно, изменение формата файла может помочь, скажите мне, я могу изменить его) < /p>
за чтение и ответы. Данные, которые я использую: < /p>
std::ofstream file;
file.open("solidRegion.dat");
for( int iz = 0 ; iz < this->Lz; iz++ ){
for( int iy = 0 ; iy < this->Ly; iy++){
for( int ix = 0 ; ix < this->Lx ; ix++){
file > z >> o;
af_obj(x,y,z) = o;
object[x][y][z] = o;
}
< /code>
Массив объектов представляет собой классический 3D 3D -массив C ++ (размеры LX, LY, LZ), и если данные правильно сохранены в этом массиве (объект), но не в объекте ArrayFire ... и я не знаю, почему.int *h_o;
h_o = new int[Lx*Ly*Lz];
int i = 0;
for ( int k = 0 ; k < Lz ; k++)
for( int ix = 0 ; ix < Lx ; ix++)
for( int j = 0 ; j < Ly ; j++)
{
h_o[i] = object[ix][j][k];
i++;
}
af::array af_obj(Lx, Ly ,Lz , h_o);
< /code>
Зная, что de 3d объект [] [] [] Array имеет правильную информацию! < /p>
Но объект Arrayfire af_obj, как я уже сказал, массив представляет сферу, в лучшем случае объект Arrayfire Shod 3 Spheres (не понятие). Порядок вложенных форм имеет значение, но я попробовал все возможное сочетание XYZ, и, кажется, ничего не работает.
Подробнее здесь: [url]https://stackoverflow.com/questions/35781820/load-arrayfire-array-from-file[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия