将数据实时存储在 Java 中的二维数组中

Store data in real time in a 2D array in Java

我在数组中存储实时数据时遇到问题。

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

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

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

现在,我需要处理该数据,所以我需要将前 256 个样本存储在二维数组中,处理该数组,然后获取一个包含接下来的 256 个样本的新数组,依此类推。但是我还没有无法做到这一点。

transformed 如果我的 1D 阵列逐个示例显示给我。 buff 是我要将数据存储到的矩阵。

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

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 数组具有相同的值。

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

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

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工具,您可以看到在这段代码的末尾,所有行都指向完全相同的数组,因此它们都是相等的。

如何修复

你想每次都创建一个新的数组进行转换,然后加载到那个数组中,所以所有的行都是不同的数组,让它们有不同的值。