我试图得到长度为>的GSL
向量v
中k个最大元素的索引。 ķ。
代码如下:
uint8_t Indices[k];
gsl_sort_vector_largest_index(Indices, k, v);
但是,出于某种原因,只有Indices
的第一个条目被填满。
知道我做错了吗?
编辑:根据要求,这是一个自包含的示例:
#include <gsl/gsl_matrix.h>
#include <gsl/gsl_sort_vector.h>
#include <stdio.h>
void main() {
uint8_t k = 3;
gsl_vector * v;
v = gsl_vector_alloc(10);
gsl_vector_set_all(v,.1);
gsl_vector_set(v, 7, .5); gsl_vector_set(v, 2, .3); gsl_vector_set(v, 4, .2);
uint8_t Indices[k];
gsl_sort_vector_largest_index(Indices, k, v);
for(uint8_t i=0;i<k;i++)
printf("%u\n",Indices[i]);
gsl_vector_free(v);
}
当我期待7 0 0
7 2 4
作为输出
答案 0 :(得分:0)
根据the documentation,gsl_sort_vector_largest_index
将size_t *
作为其第一个参数,而不是uint_8 *
。
将您的代码更改为使用size_t
代替uint_8
,您应该好好去。