Algorithm 使用Matlab或其他工具进行时间序列仿真和逻辑检查

Algorithm 使用Matlab或其他工具进行时间序列仿真和逻辑检查,algorithm,matlab,visual-c++,data-mining,time-series,Algorithm,Matlab,Visual C++,Data Mining,Time Series,1) 我有时间序列数据和信号(指示器),它们的值随时间变化 我的问题: 2) 我需要一直进行逻辑检查,例如,如果信号1和2大约在同一时间发生(等于某个值,例如=1),那么我需要知道确切的时间,以便检查接下来发生了什么 3) 使事情复杂化,例如,如果信号3发生在信号1和信号2等于1之后的某个时间范围内,我想检查其他事情 4) 时间序列很长,我需要逐段处理它 请建议如何在不发明轮子的情况下书写它。 是否建议使用状态机在Matlab?中编写?在C++中,使用线程?< /p> 5) Matlab是否有一

1) 我有时间序列数据和信号(指示器),它们的值随时间变化

我的问题:

2) 我需要一直进行逻辑检查,例如,如果信号1和2大约在同一时间发生(等于某个值,例如=1),那么我需要知道确切的时间,以便检查接下来发生了什么

3) 使事情复杂化,例如,如果信号3发生在信号1和信号2等于1之后的某个时间范围内,我想检查其他事情

4) 时间序列很长,我需要逐段处理它

请建议如何在不发明轮子的情况下书写它。 是否建议使用状态机在Matlab?中编写?在C++中,使用线程?< /p> 5) Matlab是否有一个针对此类事情的模拟器? 如何有效地定义逻辑条件

6) 我可以为此使用数据挖掘工具吗? 我看到了以下工具列表: 不知道从哪里开始


谢谢

第二个和第三个问题可以在Matlab中这样做:

T = -range; % Assuming that t starts at 0.
for n = 1 : length(t)
    if signal1(n) == 1 && signal2(n) == 1
        T = t(n);
    end
    if t(n) - T < range && signal3(n) == 1
        if % Conditions you want to get checked, could also be put in the previous if statement.
            % Things you want to be executed if these coditions are met.
        end
    end
end
T=-range;%假设t从0开始。
对于n=1:长度(t)
如果信号1(n)==1和信号2(n)==1
T=T(n);
结束
如果t(n)-t<范围和信号3(n)==1
如果要检查%条件,也可以将其放在前面的if语句中。
%如果满足这些条件,您希望执行的操作。
结束
结束
结束

使用C++等低级编程语言将提高其完成率。如果数据非常长,它还可以通过同时加载每个数组的一个元素来减少内存使用量。


Matlab有一个名为Simulink的模拟器,但它更适合于解决更复杂的问题,因为你只需要有条件地做一些事情。

Hi Fibonatic,谢谢你的回答。Hi Fibonatic,在你的答案的开头写了T=-range,在循环中写了T=T(n);没有使用第一个T,你能解释一下它是如何工作的吗?Hi fibonatic,我试着在Matlab中运行它,我得到了错误:范围=10;t=1:1:20;信号1={0,1,0,0,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0};信号2={0,1,0,1,1,1,1,1,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};信号3={0,1,0,0,1,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};T=-范围;%假设t从0开始。对于n=1:长度(t)如果((信号1(n)==1)和&(信号2(n)==1))t=t(n);end if t(n)-t