更新:迄今为止 表现最佳的算法就是这个算法.
该问题探讨了用于检测实时时间序列数据中的突然峰值的稳健算法.
请考虑以下数据集:
p = [1 1 1.1 1 0.9 1 1 1.1 1 0.9 1 1.1 1 1 0.9 1 1 1.1 1 1 1 1 1.1 0.9 1 1.1 1 1 0.9 1, ...
1.1 1 1 1.1 1 0.8 0.9 1 1.2 0.9 1 1 1.1 1.2 1 1.5 1 3 2 5 3 2 1 1 1 0.9 1 1 3, ...
2.6 4 3 3.2 2 1 1 0.8 4 4 …Run Code Online (Sandbox Code Playgroud) language-agnostic algorithm signal-processing time-series data-analysis
我对Date类的Java API感到困惑.所有内容似乎都已弃用,并且链接到Calendar类.所以我开始使用Calendar对象做我想用Date做的事情,但直觉上当我真正想要做的就是创建和比较两个日期时,使用Calendar对象会让我感到困扰.
有一个简单的方法吗?现在我做
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(0);
cal.set(year, month, day, hour, minute, second);
Date date = cal.getTime(); // get back a Date object
Run Code Online (Sandbox Code Playgroud) 这似乎是一个常见问题,但我找到的解决方案都没有对我有用.
<html>
<head>
<link rel="stylesheet" href="c/lasrs.css" type="text/css" />
</head>
<body>
<div class="header">
<img src="i/header1.png">
</div>
<div class="content">
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam cursus.
Morbi ut mi. Nullam enim leo, egestas id, condimentum at, laoreet mattis,
massa. Sed eleifend nonummy diam. Praesent mauris ante, elementum et,
bibendum at, posuere sit amet, nibh.</p>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
body {
min-width: 950px;
background-color: #FFFFFF;
color: #333333;
}
.header {
width: 950px;
height: 171px;
margin: 0px auto;
padding: 0px; …Run Code Online (Sandbox Code Playgroud) 使用highcharts创建具有堆叠列的图表时,我的系列默认情况下从上到下添加 - 第一个添加的系列放在顶部.我想改变这种行为,以便最后添加的系列在顶部.我试图改变索引和zIndex选项,但是传奇中的项目也被重新排序.这是一个简单的例子:http://jsfiddle.net/6bCBf/7/.
$(function () {
var chart = new Highcharts.Chart({
chart: {
type: 'column',
renderTo: 'container'
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar']
},
plotOptions: {
series: {
stacking: 'normal'
}
},
series: [
{
name: 'base',
data: [10, 20, 30],
index:25,
zIndex:10
},
{
name: 'sec',
data: [30, 20, 10],
index:1,
zIndex:9
}
]
});
});
Run Code Online (Sandbox Code Playgroud)
是否可以更改堆栈顺序,但保持图例排序?我只想按字母顺序排列传奇,但图表中的项目从下到上添加.
关于此答案,是否存在一种快速方法来计算具有不等数量元素的组的数组的中值?
例如:
data = [1.00, 1.05, 1.30, 1.20, 1.06, 1.54, 1.33, 1.87, 1.67, ... ]
index = [0, 0, 1, 1, 1, 1, 2, 3, 3, ... ]
Run Code Online (Sandbox Code Playgroud)
然后,我想计算数量和每组中位数之间的差(例如,组的中位数0为1.025,则第一个结果为1.00 - 1.025 = -0.025)。因此,对于上面的数组,结果将显示为:
result = [-0.025, 0.025, 0.05, -0.05, -0.19, 0.29, 0.00, 0.10, -0.10, ...]
Run Code Online (Sandbox Code Playgroud)
既然np.median.reduceat还不存在,还有另一种快速的方法来实现这一目标吗?我的数组将包含数百万行,因此速度至关重要!
可以假定索引是连续且有序的(如果不是,则很容易对其进行转换)。
import numpy as np
np.random.seed(0)
rows = 10000
cols = 500
ngroup = 100
# Create random data and groups …Run Code Online (Sandbox Code Playgroud) 我正在用相当大的算法评估来自文本文件的不同数据.
如果文本文件包含的数据点超过数据点(我需要的最小值是130万个数据点),则会出现以下错误:
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.regex.Matcher.<init>(Unknown Source)
at java.util.regex.Pattern.matcher(Unknown Source)
at java.lang.String.replaceAll(Unknown Source)
at java.util.Scanner.processFloatToken(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
当我在Eclipse中运行它时,安装的jre6(标准VM)具有以下设置:
-Xms20m -Xmx1024m -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -XX:NewSize=10m
-XX:MaxNewSize=10m -XX:SurvivorRatio=6 -XX:TargetSurvivorRatio=80
-XX:+CMSClassUnloadingEnabled
Run Code Online (Sandbox Code Playgroud)
请注意,如果我只运行部分文本文件,它可以正常工作.
现在我已经阅读了很多关于这个主题的内容,似乎某个地方我必须有数据泄漏或者我在数组中存储了太多数据(我认为我这样做).
现在我的问题是:我该如何解决这个问题?
基本上我正在寻找一些防止大量内存存储/泄漏的一般指导原则.
背景信息:我习惯用Java编程,我知道如何使用Eclipse和Visual Studio.
最终目标:创建一个GUI,最好是在Visual Studio中,它执行Java函数.
我希望从这个问题中实现:C++中的一个按钮,单击它,执行Java函数并将结果返回给C++.(可能是通过调用JVM)
我真的怀疑在这里发布这个问题,但我无法在任何地方找到"直截了当"的答案; 因此,我希望有人可以为这个问题展示最简单的解决方案.
我目前考虑了以下数据结构:
现在我知道的存在Jace,JNI以及SWIG,但我认为他们是制造复杂的程序,而不是简单的接口非常方便.我不想制作一个复杂的程序,因此我觉得学习他们所有的命令都很麻烦.
我也读过许多Stack Exchange问题,问的问题完全相同,但所有这些问题似乎都给出了非常复杂的答案.
所以这是我的问题:
从C++执行(如果必要的话:预编译的)Java函数的绝对最简单的方法是什么,其中C++代码将一些参数传递给这个Java函数
提前致谢.
我一直在尝试实时检测正弦时间序列数据中的峰值,但是到目前为止我还没有成功。我似乎找不到一种实时算法,可以以合理的准确度检测正弦信号中的峰值。我要么没有检测到峰值,要么在正弦波上有无数个点被检测为峰值。
对于类似于正弦波并且可能包含一些随机噪声的输入信号,有什么好的实时算法?
作为一个简单的测试案例,考虑一个频率和幅度始终相同的固定正弦波。(确切的频率和幅度无关紧要;我随意选择了 60 Hz 的频率,+/- 1 个单位的幅度,采样率为 8 KS/s。)以下 MATLAB 代码将生成这样的正弦曲线信号:
dt = 1/8000;
t = (0:dt:(1-dt)/4)';
x = sin(2*pi*60*t);
Run Code Online (Sandbox Code Playgroud)
使用Jean-Paul 开发和发布的算法,我要么没有检测到峰值(左),要么检测到无数个“峰值”(右):
我已经尝试了我能想到的这 3 个参数的几乎所有值组合,遵循让-保罗给出的“经验法则”,但到目前为止我还没有得到我预期的结果。
我找到了由 Eli Billauer 开发和发布的替代算法,它确实给了我想要的结果——例如:
尽管 Eli Billauer 的算法要简单得多并且确实能够可靠地产生我想要的结果,但它并不适合实时应用程序。
作为我想应用此类算法的信号的另一个示例,请考虑 Eli Billauer 为他自己的算法给出的测试用例:
t = 0:0.001:10;
x = 0.3*sin(t) + sin(1.3*t) + 0.9*sin(4.2*t) + 0.02*randn(1, 10001);
Run Code Online (Sandbox Code Playgroud)
这是一个更不寻常(不太均匀/规则)的信号,具有变化的频率和幅度,但通常仍是正弦波。绘制时,峰值对眼睛来说是显而易见的,但很难用算法识别。
正确识别正弦输入信号中的峰值的好的实时算法是什么?在信号处理方面,我并不是真正的专家,因此获得一些考虑正弦输入的经验法则会很有帮助。或者,也许我需要修改例如 Jean-Paul 的算法本身,以便在正弦信号上正常工作。如果是这种情况,需要进行哪些修改,我将如何进行这些修改?
algorithm matlab signal-processing time-series data-analysis
在我的Smarty 3模板中,我有以下代码:
{$a=8.34}
{$b=8.33}
{$a-$b|round:2}
Run Code Online (Sandbox Code Playgroud)
预期结果为:0.01
但我收到了这个:0.0099999999999998
有人知道如何解决这个问题吗?
如何创建0到100范围的掩码?
$(document).ready(function() {
$("#masked").inputmask(???);
});
Run Code Online (Sandbox Code Playgroud) java ×3
algorithm ×2
html ×2
performance ×2
time-series ×2
arrays ×1
c++ ×1
calendar ×1
css ×1
date ×1
datetime ×1
highcharts ×1
input-mask ×1
javascript ×1
jquery ×1
margin ×1
matlab ×1
median ×1
numpy ×1
numpy-ufunc ×1
overhead ×1
python ×1
rounding ×1
smarty ×1
visual-c++ ×1