【问题标题】:Store data in real time in a 2D array in Java在 Java 中将数据实时存储在二维数组中
【发布时间】:2017-10-31 01:20:24
【问题描述】:

我无法在数组中存储实时数据。

我有一个实时读取数据的一维数组,这很好,它会像这样打印我的数据:

D/this is my array: arr: = [-1.43, -3.5916, 2.71, 4.42, -4.4, 0.0]

这个数据代表一个样本,我每秒读取数据 1000 个样本,所以如果我打印这个数组,它会显示我每次读取的读数,我的意思是每秒 1000 个像图片一样的数组(具有不同的数据)。

现在,我需要处理该数据,因此我需要将前 256 个样本存储在一个二维数组中,处理该数组,然后使用接下来的 256 个样本获取一个新的数组,依此类推。但我没有能够做到这一点。

transformed 如果我的一维数组逐个显示我。 buff 是我要存储数据的矩阵。

这就是我的转换方式,首先是 short[],然后我将其转换为 double:

short[] yaxis = msg.getData().getShortArray(BiopluxService.KEY_FRAME_DATA);
double[] transformed = new double[yaxis.length];
for (int j = 0; j < yaxis.length; j++) {
    transformed[j] = (double) yaxis[j];
}

这是我目前所拥有的:

double[][] buff = new double[256][6];
for (int f = 0; f < 256; f++) {
    buff[f] = transformed;
}
Log.d("this is my array", "arr: " + Arrays.deepToString(buff));

但我的 buff 数组具有相同的值。

【问题讨论】:

  • 被转换为一个变量,或者一个方法调用,如果它是一个值,你将所有行设置为指向同一个数组
  • 我更新了问题,以便您了解我是如何转变的
  • 所以你一次读取值,然后将所有行设置为相同的值?如果是这样,那将是问题

标签: java arrays real-time


【解决方案1】:

为什么数组不包含不同的值

如果您运行此代码,您将所有行设置为指向同一个数组:

public class ClassNameHere {
   public static void main(String[] args) {
      double[][] d = new double[5][];

      double[] row = {1,2,3};
      for (int i = 0; i < 5; i++) {
         d[i] = row;
      }
   }
}

通过this 工具,您可以看到在这段代码的末尾,所有行都指向完全相同的数组,因此它们都是相等的。

如何解决

你想为每次转换创建一个新数组,然后加载到该数组中,因此所有行都是不同的数组,允许它们具有不同的值。

【讨论】:

  • 好的,我明白了,但我不太确定该怎么做。如果我创建不同的数组,例如transformed[1] 等,有时我会得到超过256 的变换,当这种情况发生时,我需要重新启动我的二维数组并创建一个新的数组,下一个256 变换。或者我不知道我是不是做错了,你能告诉我怎么做吗?
  • 您需要为每组读数创建一个新的转换,将数据加载到其中,然后将给定索引处的缓冲区设置为指向您的新数组,然后对每个读数重复此过程项目
猜你喜欢
  • 2014-01-04
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
  • 2013-05-07
  • 2014-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多