Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在matlab中基于条件链接两个表_Arrays_Matlab_If Statement_For Loop - Fatal编程技术网

Arrays 在matlab中基于条件链接两个表

Arrays 在matlab中基于条件链接两个表,arrays,matlab,if-statement,for-loop,Arrays,Matlab,If Statement,For Loop,我正在使用matlab准备我的数据集,以便在某些数据挖掘模型中运行它,我面临着在我的两个表之间链接数据的问题 因此,我有两个表,A和B,它们包含特定时间戳中特定值的顺序记录,我想创建第三个表,C,在其中,我将根据一些条件在同一行中添加A和B的列 表A和B的行数不同(A有更多的度量值),但它们都有两列: 第1列:记录时间(hh:mm:ss)和 第二列:当时的记录值 当满足以下所有条件时,将在表C中添加A和B列: A和B之间的时间差大于3秒但小于5秒 A的记录值为B记录值的40%-50% 任何帮

我正在使用matlab准备我的数据集,以便在某些数据挖掘模型中运行它,我面临着在我的两个表之间链接数据的问题

因此,我有两个表,A和B,它们包含特定时间戳中特定值的顺序记录,我想创建第三个表,C,在其中,我将根据一些条件在同一行中添加A和B的列

表A和B的行数不同(A有更多的度量值),但它们都有两列:

  • 第1列:记录时间(hh:mm:ss)和
  • 第二列:当时的记录值
当满足以下所有条件时,将在表C中添加A和B列:

  • A和B之间的时间差大于3秒但小于5秒

  • A的记录值为B记录值的40%-50%


  • 任何帮助都将不胜感激

    对于第一个条件,您需要类似于
    [row,col,val]=find((A(:,1)-B(:,1))>2sec&&(A(:,1)-B(:,1))0.4*B(:,2)&&A(:,2)感谢您的响应和帮助!不过,在这段时间里,我采用了一种不同的方法,将
    hh:mm:ss
    转换为秒,以便以后进行比较:

    dv1 = datevec(A, 'dd.mm.yyyy HH:MM:SS.FFF ');
    secs = [3600,60,1];
    dv1(:,6) = floor(dv1(:,6));
    timestamp = dv1(:,4:6)*secs.';
    

    现在,我正在将时间和权重条件结合到一段将要运行的代码中。我应该在
    for
    循环中使用
    if
    条件,还是
    for
    循环不必要?

    欢迎使用。请在您已经尝试过的代码中添加a,列出您得到的任何错误,并解释为什么不需要此代码工作和你想要它做什么。
    time1 = [datenum([0 0 0 0 0 3]) datenum([0 0 0 0 0 3])];
    
    A(:,1) = datenum(A(:,1));
    B(:,1) = datenum(B(:,1));
    time1 = [datenum([0 0 0 0 0 3]) datenum([0 0 0 0 0 3])];
    [row1,col1,val1]=find((A(:,1)-B(:,1))>time1(1)&& (A(:,1)-B(:,1))<time1(2));
    [row2,col2,val2]=find(A(:,2)>0.4*B(:,2) && A(:,2)<0.5*B(:,2);
    
    [row3,col3,val3]=find((A(:,1)-B(:,1))>time1(1)&& ...
    (A(:,1)-B(:,1))<time1(2) && A(:,2)>0.4*B(:,2)...
     && A(:,2)<0.5*B(:,2);
    
    C = A(row3,2)+B(row3,2);
    
    dv1 = datevec(A, 'dd.mm.yyyy HH:MM:SS.FFF ');
    secs = [3600,60,1];
    dv1(:,6) = floor(dv1(:,6));
    timestamp = dv1(:,4:6)*secs.';