我目前正在开发打击乐教程程序。该程序要求我可以确定正在播放什么鼓,为此我将分析鼓录音的频率并查看频率是否在给定范围内。
到目前为止,我一直在为 FFT 使用 Apache math commons 实现(http://commons.apache.org/math/),但我的问题是,一旦我执行了 FFT,我如何使用结果数组来计算频率包含在信号中?
注意:我也尝试过使用自相关进行试验,但它似乎不适用于来自架子鼓的样本
任何有关如何确定正在击中的鼓的帮助或替代建议将不胜感激
编辑:自从写这篇文章以来,我发现了一个很棒的在线课程,关于在 Java 中实现 FFT 以进行时间/频率变换在 Java 中的频谱分析
java signal-processing fft apache-commons frequency-analysis
我有这个代码来递归删除文件和目录.它工作正常,但有一点问题.如果$ path =/var/www/foo /它会删除foo中的所有内容,但不会删除foo.我也想删除foo目录.任何的想法?
public function delete($path) {
if(!file_exists($path)) {
throw new RecursiveDirectoryException('Directory doesn\'t exist.');
}
$directoryIterator = new DirectoryIterator($path);
foreach($directoryIterator as $fileInfo) {
$filePath = $fileInfo->getPathname();
if(!$fileInfo->isDot()) {
if($fileInfo->isFile()) {
unlink($filePath);
}
else if($fileInfo->isDir()) {
if($this->emptyDirectory($filePath)) {
rmdir($filePath);
}
else {
$this->delete($filePath);
rmdir($filePath);
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我需要在运行时创建添加servlet.当我运行以下代码时.
protected void processRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
{
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title> URI out</title>");
out.println("</head>");
out.println("<body>");
Integer generatedKey = Math.abs(randomiser.nextInt());
out.print(generatedKey);
createServlet(Integer.toString(generatedKey),request.getServletContext());
} finally {
out.println("</body>");
out.println("</html>");
out.close();
}
}
private void createServlet(String generatedKey, ServletContext servletContext) {
String servletMapping = "/"+generatedKey;
ServletRegistration sr = servletContext.addServlet(generatedKey, "com.path.lbs.servlets.testDynamic");
sr.setInitParameter("keyname", generatedKey);
sr.addMapping(servletMapping);
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误.
java.lang.IllegalStateException:PWC1422:无法为servlet上下文/ 123-LBS的servlet 1114600676配置映射,因为此servlet上下文已经初始化
是否无法在运行时添加新的servlet,即在Servlet Context初始化之后或者我做错了什么?
我有一个可编辑的JTable,并设置了一个DefaultCellEditor,如下所示:
colModel.getColumn( 1 ).setCellEditor( new DefaultCellEditor( txtEditBox ) {
// ...
@Override
public void cancelCellEditing() {
super.cancelCellEditing();
// handling the event
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
但是,在编辑此列中的单元格时按下escape时,虽然编辑模式已完成,但不会调用此方法.有什么想法吗?难道我做错了什么?有没有办法处理这个(除了手动添加KeyListener)?
我正在努力了解Java EE和Spring Framework之间的区别.有谁可以帮我这个.
Python - os.popen和subprocess.Popen有什么区别?
我有一个简单的控制台应用程序,它输出一个菜单并等待用户输入.执行适当的操作后,整个过程重复进行.输入特定字符串时,程序退出.这是通过无限循环和早期返回语句实现的:
int main()
{
while (true)
{
OutputMenu();
string UserChoice;
cin >> UserChoice;
// ...
if (UserChoice == "exit") return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
根据我的老师的说法,使用无限循环并使用return语句破解我的方法是不好的做法.他建议如下:
int main()
{
bool ShouldExit = false;
while (!ShouldExit)
{
OutputMenu();
string UserChoice;
cin >> UserChoice;
// ...
if (UserChoice == "exit") ShouldExit = true;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我目前正在以3人为一组进行AndAR项目.我是负责Android手机视频流的人.我得到了一台D-Link DCS-920 IP摄像机,我发现它使用MJPEG编解码器作为直播视频流,网络服务器使用Jview来观看直播.据我所知,MJPG不是Android操作系统支持的文件类型所以我想出了一个想法,而不是使用ImageView,我使用WebView来传输视频.我实现了一个非常简单的概念,它的工作原理!但问题是,刷新率很糟糕.我得到视频图像(例如http://192.168.1.10/image.jpg:)在WebView上查看并实现一个Timer来控制刷新率(假设它设置为30fps,每33ms刷新一次)但是它只能达到500ms间隔,任何更低的间隔我注意到它不会更平滑,有时图像不会加载,连接不稳定(例如:掉线).这可能是我的速度比它能以更快的速度刷新吗?但是在网络服务器Jview上它没有问题!我试图找到jview的源代码,但我没有希望.无论如何这里是我写的代码
package org.example.test;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.EditText;
public class Webview extends Activity {
public WebView webView;
public Timer autoUpdate;
public String url;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webView = (WebView) findViewById(R.id.webview);
webView.getSettings();
final EditText urlText = (EditText) findViewById(R.id.urlText);
//Buttons//////////////////------------
final Button connectB = (Button)findViewById(R.id.connectButton);
connectB.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) { …Run Code Online (Sandbox Code Playgroud) 在更新我的代码库之前,Eclipse的同步视图非常适合查看来自每个人的传入更改.
TortoiseSVN中是否有类似的功能?我只能比较那里的2个版本,我没有找到任何功能来比较我的工作副本(这是修改过的文件和各种版本的文件的混合)与HEAD修订版很容易!
我正在考虑使用enum类型来管理我正在开发的Java游戏中的i18n,但我对使用具有大量元素的枚举(我认为数千个)时可能出现的性能问题感到好奇.
其实我正在尝试这样的事情:
public enum Text {
STRING1,
STRING2,
STRING3;
public String text() {
return text;
}
public String setText() {
this.text = text;
}
}
Run Code Online (Sandbox Code Playgroud)
然后加载它们我可以填写字段:
static
{
Text.STRING1.setText("My localized string1");
Text.STRING2.setText("My localized string2");
Text.STRING3.setText("My localized string3");
}
Run Code Online (Sandbox Code Playgroud)
当然,当我必须管理多种语言时,我会从文件中加载它们.
我问的是
Text.STRING1.text()).所以它应该是恒定的复杂性,或者它们可能只是在编译阶段被替换.谢谢