首页 > 解决方案 > 如何在Java中将长度为m的整数数组转换为长度为n的数组[已解决]

问题描述

嘿想将一个整数数组从给定长度(大于 852)转换为另一个长度为 852 的整数数组。

那是因为我想将 m 值显示为 852 像素。

逻辑方法只是将这两者之间的比率分开:

假设我要压缩的数组有 2556 个值。

这之间的比率是 2556/852 = 3,所以我可以抓住 3 个值并取平均值。

问题是比率并非总是整数,例如 2756/852 是 3.2347...

谁能帮我?

谢谢!

标签: javaprocessing

解决方案


我实际上解决了,我设法创建了一个函数 int Java,它完全符合我的要求。你只需要导入import java.util.Arrays;

功能是compressArr(arrayToCompress, newArrayLength)

返回一个浮点数组。

public static float[] compressArr(float[] arr1, int l){
float[] arr2 = new float[l];
for(int i = 0; i<l;i++){
arr2[i] = average(Arrays.copyOfRange(arr1,P1(i,arr1.length,l),P2(i,arr1.length,l)+1));
}
  return arr2;
}

public static int P1(int x,int n, int d){
  float r = ((float)n)/d;
  int b = 0;
  int p = 0;
for(int i = 0; i<x ; i++){
p = (int)(x*r-b);
b*=p;
}
return(p);
}

public static int P2(int x,int n, int d){
  x+=1;
  float r = ((float)n)/d;
  int b = 0;
  int p = 0;
for(int i = 0; i<x ; i++){
p = (int)(x*r-b);
b*=p;
}
return(p-1);
}

static float average(float a[]) {
  int n = a.length;
  float sum = 0;
  for (int i = 0; i < n; i++)
  sum += a[i];
  return sum / n;
}

推荐阅读