对于上下文,我正在研究一种人工智能,它可以对语音进行分类,并最终控制视频游戏中的角色。我有连续采样音频并将其转换为频谱图的代码,但由于java线程不准确,频谱图没有恒定的维度。
我有一个表示频谱图的二维值数组,我想要调整该数组的大小。我发现目前唯一的方法是效率不够的,因为时间是至关重要的。例如,使用BufferedImage对象和图像对象:
Image newImage = yourImage.getScaledInstance(newWidth, newHeight, Image.SCALE_DEFAULT);
有没有一种我可以实现的算法来调整值数组的大小,就像调整图像大小一样
发布于 2020-07-26 03:40:01
java中的数组根本不能调整大小。“resize”操作生成一个全新的数组,复制数据,然后返回新创建的数组。
抽象是游戏的名称:例如,这是:
List<String> list = new ArrayList<String>(1000);
for (int i = 0; i < 500; i++) list.add("Hello, " + i);给你一张有500件东西的清单。如果你再多加500个,就不会有任何惩罚。
在java.util包和java.util.concurrent中已经有很多可用集合。对于更奇特的需求,可以看看第三方产品;有大量的类型用于各种用途,包括原始集合,具有性能影响保证的集合(arraylist具有低成本,但只有当您考虑成本摊销时:不时地对arraylist的add调用是昂贵的,因为它必须创建新的数组。如果这是一个问题,有一个库可以解决这个问题- RealTime java非常需要这个库,这可能有助于寻找合适的实现)。
请注意,您不应该担心性能,直到您有一个真实的‘证据’,代码运行速度比您希望的慢。然后运行分析器,并配备分析器报告,只查看分析器告诉您CPU和/或内存资源正在花费的那些区域。优化代码中小于总资源消耗1%的部分是没有意义的。
注:再来一次..“在java中调整数组的大小”不是一件事,而且...'A 2D array in java‘也不存在。你可以有一个数组的数组,这和这里的不完全一样。但这不会改变观点:你需要一个能做你想做的事情的抽象,而' array‘(或数组的数组)不是它。
发布于 2020-07-26 04:32:16
一旦你在java中给数组分配了一个大小,如果你需要一个动态的列表大小,你就不能改变it.Use集合框架。
https://stackoverflow.com/questions/63092732
复制相似问题