2015-11-24 5 views
1

Я не могу понять, как инициализировать a, скажем, 101 x 101 массив f32 со значением, скажем, sin ((xindex-50) * (xindex-50) + (Yindex-50 * Yindex-50)).Инициализация 2D-массивов как функция их индексов

я мог бы сделать

array x(seq(-50,50), 101); // get one of the indices 
array pic(101, 101);   // result 

, но здесь я остановиться, так как я не могу видеть, как сделать декартово произведение индексов.

pic(seq(-50,50), seq(-50,50)) = .... // what do I put on the RHS that will work? 

Я уверен, что когда я проснусь завтра, все будет очевидно, но я не могу сейчас это увидеть. (Это так просто в Halide ...)

+0

Хмм, мозг говорит мне использовать gfor при пробуждении. После выполнения некоторых поручений я прочитаю документацию по этому вопросу и посмотрю, работает ли это. Возможно, нет возможности выразить выше в «нотации» массива, то есть использовать функции массива и члены класса в RHS. –

ответ

1

Вышеупомянутая проблема может быть решена с помощью iota(). Например, для массива 50 x 50

array rows = iota(dim4(50), dim4(1, 50)); // y values 
array cols = iota(dim4(1,50), dim4(50)); // x values 
array pic = sin (rows*rows + cols*cols); // function of x and y per element 

 Смежные вопросы

  • Нет связанных вопросов^_^