将数据实时存储在 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工具,您可以看到在这段代码的末尾,所有行都指向完全相同的数组,因此它们都是相等的。
如何修复
你想每次都创建一个新的数组进行转换,然后加载到那个数组中,所以所有的行都是不同的数组,让它们有不同的值。
我在数组中存储实时数据时遇到问题。
我有一个实时读取数据的一维数组,这很好,它正在像这样打印我的数据:
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工具,您可以看到在这段代码的末尾,所有行都指向完全相同的数组,因此它们都是相等的。
如何修复
你想每次都创建一个新的数组进行转换,然后加载到那个数组中,所以所有的行都是不同的数组,让它们有不同的值。