所以我试图在C中编写离散傅立叶变换以使用真正的32位浮点wav文件.它一次读取2帧(每个通道一个,但为了我的目的,我假设它们都是相同的,因此我使用frame [0]).该代码应该通过用频率20,40,60,...,10000探测输入文件的幅度谱来写出.我在输入框架上使用汉宁窗口.如果可以,我想避免使用复数.当我运行它时,它给了我一些非常奇怪的振幅(其中大部分非常小,并且与正确的频率无关),这让我相信我在计算中犯了一个根本性的错误.有人可以提供一些有关这里发生的事情的见解吗?这是我的代码:
int windowSize = 2205;
int probe[500];
float hann[2205];
int j, n;
// initialize probes to 20,40,60,...,10000
for (j=0; j< len(probe); j++) {
probe[j] = j*20 + 20;
fprintf(f, "%d\n", probe[j]);
}
fprintf(f, "-1\n");
// setup the Hann window
for (n=0; n< len(hann); n++) {
hann[n] = 0.5*(cos((2*M_PI*n/(float)windowSize) + M_PI))+0.5;
}
float angle = 0.0;
float w = 0.0; // windowed sample
float realSum[len(probe)]; // stores the real part of the probe[j] within a window
float imagSum[len(probe)]; // stores …Run Code Online (Sandbox Code Playgroud) 我很好奇是否有人可以提出一种(更快)的方法来计算可变时间间隔(窗口)的滚动统计(滚动均值,中位数,百分位数等).
也就是说,假设有一个随机定时观察(即不是每日,或每周数据,观察只有时间戳,如在滴答数据中),并且假设您想查看中心和离散统计数据,您可以扩大并收紧计算这些统计数据的时间间隔.
我做了一个简单的for循环来做到这一点.但它显然运行得非常慢(实际上我认为我的循环仍在运行在我设置的一小部分数据样本上以测试其速度).我一直试图让ddply这样做 - 这对于每日统计数据来说似乎是不可能的 - 但我似乎无法摆脱它.
例:
样品设置:
df <- data.frame(Date = runif(1000,0,30))
df$Price <- I((df$Date)^0.5 * (rnorm(1000,30,4)))
df$Date <- as.Date(df$Date, origin = "1970-01-01")
Run Code Online (Sandbox Code Playgroud)
示例函数(运行非常慢,有很多观察结果
SummaryStats <- function(dataframe, interval){
# Returns daily simple summary stats,
# at varying intervals
# dataframe is the data frame in question, with Date and Price obs
# interval is the width of time to be treated as a day
firstDay <- min(dataframe$Date)
lastDay <- max(dataframe$Date)
result <- data.frame(Date = NULL,
Average = NULL, …Run Code Online (Sandbox Code Playgroud) 据我所知,翻滚窗口是设置一个时间间隔的,并且事件不会重叠并且在设置的时间间隔内到期。现在,跳跃窗口和滑动窗口重叠,在跳跃窗口的情况下,我们有一个跳跃间隔和正常窗口间隔,而滑动窗口有一个不同于窗口间隔的滑动间隔。我查看了跳跃窗口上的这个链接,我理解它,但滑动间隔似乎也相同。有人可以帮我解释其中的区别吗?
在C/C++中是否有任何MFCC实现?任何源代码或库?
我已经找到了http://code.google.com/p/libmfcc/,这似乎很好.
我正在使用Kafka Stream 2.1
我正在尝试为流应用程序编写一些测试,该应用程序使用会话间隔为300ms的会话窗口按事件的键(即相关ID)聚合某些事件。
这是由方法表示的聚合实现:
private static final int INACTIVITY_GAP = 300;
public KStream<String, AggregatedCustomObject> aggregate(KStream<String, CustomObject> source) {
return source
// group by key (i.e by correlation ID)
.groupByKey(Grouped.with(Serdes.String(), new CustomSerde()))
// Define a session window with an inactivity gap of 300 ms
.windowedBy(SessionWindows.with(Duration.ofMillis(INACTIVITY_GAP)).grace(Duration.ofMillis(INACTIVITY_GAP)))
.aggregate(
// initializer
() -> new AggregatedCustomObject(),
// aggregates records in same session
(s, customObject, aggCustomObject) -> {
// ...
return aggCustomObject;
},
// merge sessions
(s, aggCustomObject1, aggCustomObject2) -> {
// ...
return aggCustomObject2; …Run Code Online (Sandbox Code Playgroud) 我有一个ac#应用程序,我想指示从一个不同的进程很好地关闭.我也希望能够让它打开它的主窗口.我有一个对它的主窗口句柄的引用.
我知道我可以使用精心设计的方案,如远程处理或WCF.问题是我可以使用更简单的机制(如窗口消息)或c#应用程序中窗口的OnClose事件处理程序来实现
如何使用 xlib 的 C 接口检查窗口是否最小化?
编辑:这段代码应该工作吗?
int window_is_minimized(Display *display, Window window) {
Atom actual_type;
int actual_format;
unsigned long i, num_items, bytes_after;
Atom *atoms;
atoms=NULL;
XGetWindowProperty(display, window, vdl_x11_usefull_atoms->_NET_WM_STATE, 0, 1024, False, XA_ATOM, &actual_type, &actual_format, &num_items, &bytes_after, (unsigned char**)&atoms);
for(i=0; i<num_items; ++i) {
if(atoms[i]==vdl_x11_usefull_atoms->_NET_WM_STATE_HIDDEN) {
XFree(atoms);
return 1;
}
}
XFree(atoms);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我在这里看过各种FFT问题,但我对部分实现感到困惑.我没有实时执行FFT,而是想离线执行.让我们说我有原始数据float[] audio.采样率为44100,因此audio[0] to audio[44099]将包含1秒的音频.如果我的FFT函数处理窗口(例如汉宁),我是否只需将整个audio缓冲区一次性放入函数中?或者,我是否必须将音频切换为4096(我的窗口大小)的块,然后将其输入FFT,然后在顶部执行窗口功能?
我目前正在为现有的Delphi应用程序编写一个窗口系统.
目前,该程序由许多全尺寸表格组成,这些表格按照所需的顺序以模态方式显示,并且用户不能移动任何形式.我的目标是让所有这些形式都可以移动.以前的表单堆叠在彼此之上,但由于没有可以移动,因此用户看不到背景表单.到目前为止,我的解决方案是在打开一个新孩子时隐藏"父母"表格,并在孩子关闭时重新显示它.
不幸的是,由于使用showModal调用每个子节点,因此直到模态过程完成之后,才会调用make父表单可见,因此在隐藏子表单之后,用户会看到没有表单可见的瞬间闪存.
有没有办法阻止模态表单在完成进程后自动隐藏?一旦父表单再次可见,这将允许我手动隐藏它们.我试图在每个子表单的FormHide事件中安排此操作但这不起作用,因为在打开其自己的子项时也会隐藏子表单.
编辑:
以下是我根据雷米的建议给出的内容
procedure openModalChild(child: TForm; parent: TForm);
var
WindowList: Pointer;
SaveFocusCount: Integer;
SaveCursor: TCursor;
SaveCount: Integer;
ActiveWindow: HWnd;
Result: integer;
begin
CancelDrag;
with child do begin
Application.ModalStarted;
try
ActiveWindow := GetActiveWindow;
WindowList := DisableTaskWindows(0);
//set the window to fullscreen if required
setScreenMode(child);
try
Show; //show the child form
try
SendMessage(Handle, CM_ACTIVATE, 0, 0);
ModalResult := 0;
repeat
Application.HandleMessage;
//if Forms.Application.FTerminate then ModalResult := mrCancel else
if ModalResult <> 0 then closeModal(child as TCustomForm);
until ModalResult <> …Run Code Online (Sandbox Code Playgroud) 我要实现的目的是按用户对我从Kafka主题中收到的某些消息进行分组并对其进行窗口化处理,以便汇总我在(5分钟)窗口中收到的消息。然后,我想收集每个窗口中的所有聚合,以便立即处理它们,并将它们添加到我在5分钟间隔内收到的所有邮件的报告中。
最后一点似乎是艰难的部分,因为Kafka Streams似乎没有提供(至少我找不到它!)任何可以在“有限”流中收集所有与窗口相关的东西的东西,以便在一个地方处理。
这是我实现的代码
StreamsBuilder builder = new StreamsBuilder();
KStream<UserId, Message> messages = builder.stream("KAFKA_TOPIC");
TimeWindowedKStream<UserId, Message> windowedMessages =
messages.
groupByKey().windowedBy(TimeWindows.of(SIZE_MS));
KTable<Windowed<UserId>, List<Message>> messagesAggregatedByWindow =
windowedMessages.
aggregate(
() -> new LinkedList<>(), new MyAggregator<>(),
Materialized.with(new MessageKeySerde(), new MessageListSerde())
);
messagesAggregatedByWindow.toStream().foreach((key, value) -> log.info("({}), KEY {} MESSAGE {}", value.size(), key, value.toString()));
KafkaStreams streams = new KafkaStreams(builder.build(), config);
streams.start();
Run Code Online (Sandbox Code Playgroud)
结果是像
KEY [UserId(82770583)@1531502760000/1531502770000] Message [Message(userId=UserId(82770583),message="a"),Message(userId=UserId(82770583),message="b"),Message(userId=UserId(82770583),message="d")]
KEY [UserId(77082590)@1531502760000/1531502770000] Message [Message(userId=UserId(77082590),message="g")]
KEY [UserId(85077691)@1531502750000/1531502760000] Message [Message(userId=UserId(85077691),message="h")]
KEY [UserId(79117307)@1531502780000/1531502790000] Message [Message(userId=UserId(79117307),message="e")]
KEY [UserId(73176289)@1531502760000/1531502770000] Message [Message(userId=UserId(73176289),message="r"),Message(userId=UserId(73176289),message="q")]
KEY [UserId(92077080)@1531502760000/1531502770000] Message [Message(userId=UserId(92077080),message="w")] …Run Code Online (Sandbox Code Playgroud)