Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 数据阵列抽取_C_Arrays_Reduce - Fatal编程技术网

C 数据阵列抽取

C 数据阵列抽取,c,arrays,reduce,C,Arrays,Reduce,我有一个数组,它变化很快,长度可变-最小可能是100,最大可能是5公里。我将使用这些值对一个数据列进行着色,我通过一行一行地绘制数据列。这将类似于扫描图 另一件事是,我有一个固定的列长度,但是可变的数据数组长度,所以数组的每个成员都应该适合于这个图。如果数据的长度小于列的长度,我应该扩展数组,这个数组比较简单,我做到了。但是如果数据的长度更大,我必须做一些类似于抽取的事情 问题是,我应该在抽取过程中保持数组的特征。当我试图计算每N个成员的算术平均值时,图形变得更加平滑,这是我不想看到的 在不改变

我有一个数组,它变化很快,长度可变-最小可能是100,最大可能是5公里。我将使用这些值对一个数据列进行着色,我通过一行一行地绘制数据列。这将类似于扫描图

另一件事是,我有一个固定的列长度,但是可变的数据数组长度,所以数组的每个成员都应该适合于这个图。如果数据的长度小于列的长度,我应该扩展数组,这个数组比较简单,我做到了。但是如果数据的长度更大,我必须做一些类似于抽取的事情

问题是,我应该在抽取过程中保持数组的特征。当我试图计算每N个成员的算术平均值时,图形变得更加平滑,这是我不想看到的

在不改变其特性的情况下,我应该怎么做才能将此数组放入图形中


这是图表的样子:

我想你的意思是,你的相关信息是尖峰的位置和高度。因此,您希望在保留尖峰及其高度的同时重新缩放图形

实现这一点的一种方法是删除与相邻数据点的值差异最小的数据点。您可以计算每个数据点的分数,该分数与其相邻数据点的值之差成正比,并抽取分数最小的数据点。候选分数函数是差的平方和

然后创建一个与数据向量一样大的分数向量,并对每个数据值计算其分数,如下所示

score[i] = square(data[i]-data[i-1]) + square(data[i+1]-data[i]);
另一位候选人是

score[i] = abs(data[i]-data[i-1]) + abs(data[i+1]-data[i]);
您还希望此抽取尽可能均匀地应用于数据,以便图形不会失真。实现这一点的一种方法是将数据拆分为多个存储桶,并在每个存储桶中抽取所需数量的数据点


如果必须删除多个数据点(N>2),则最好在多次通过时删除,每次通过都会重新计算分数。在这种情况下,您不会对每个桶的内容进行太多扭曲。

您能更精确地说明您在计算抽取时做了什么吗?什么是N?是否要重新缩放数据数组长度以适应图表?按定义计算平均值将使事情变得平滑。如果这不是你想要的效果,你需要使用一个函数而不是平均值。一些可能性是选择窗口外的第一个、最后一个、中间点或其他代表点(可能是随机的)……我想到的保持图形清晰度的第一件事是保持N组中的值,该值比上一列中的值更远。是的,@chmike重新调整数据数组长度以适应图表,这绝对是我想要做的。但同时,我想保持快速变化的数据的清晰度。N是重缩放因子,基本上是(图形/数据计数的宽度)。twalberg,随机选择点是有道理的,但它可能会影响锐度,不是吗?Joël Hecht,你能再解释一点吗?事实上它可能工作得很好。我在寻找一种方法,通过某种邻里关系来消除积分,但老实说,我无法计算。然后,我要做的下一个数学运算是根据我的重缩放因子将数据拆分成一个存储桶,并在本节中执行这些运算。真的很感谢你的帮助@chmike,我想我会投票支持这个被接受的答案。