Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.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
Performance 比较几个表列_Performance_Matlab_Loops - Fatal编程技术网

Performance 比较几个表列

Performance 比较几个表列,performance,matlab,loops,Performance,Matlab,Loops,我有两个不同行数和三列数的表。如果对于某一行,第一列和第二列中的值与另一个表中的值相同,则我希望从第三列中选择值。下面是一个有效的示例代码,但实际上,我在两个表中都有超过200万行,因此需要很长时间才能运行有没有办法通过消除循环来加快代码速度? MOOSE2=table(['2010/03/30 00:30:00'; '2010/03/22 18:00:00' ; '2010/04/21 18:30:00'; '2010/02/20 02:20:00'; '2010/03/10 02:30:0

我有两个不同行数和三列数的表。如果对于某一行,第一列和第二列中的值与另一个表中的值相同,则我希望从第三列中选择值。下面是一个有效的示例代码,但实际上,我在两个表中都有超过200万行,因此需要很长时间才能运行有没有办法通过消除循环来加快代码速度?

MOOSE2=table(['2010/03/30 00:30:00'; '2010/03/22 18:00:00' ; '2010/04/21 18:30:00';  '2010/02/20 02:20:00'; '2010/03/10 02:30:00'],[5 ;8 ;4; 9 ;7],[10; 11 ;12 ;13 ;14]);
Lion2=table(['2010/03/30 00:30:00';  '2010/04/21 18:30:00';  '2010/03/20 22:00:00';  '2010/03/10 02:00:00'],[5;4;6;7],[17;12;11;14]);
[sMOOSE,~]=size(MOOSE2);
[sLion,~]=size(Lion2);
dmoose=[];
dlion=[];
for i=1:sLion
    for j=1:sMOOSE
        if (MOOSE2.(1)(j,:)==Lion2.(1)(i,:))&(MOOSE2.(2)(j,:)==Lion2.(2)(i,:))
        dmoose=[dmoose;MOOSE2.(3)(j,:)];
        dlion=[dlion;Lion2.(3)(i,:)];
        end
    end
end
这给了我正确的输出

dlion =

    17
    12
dmoose =

    10
    12
完美场景:


小提示:我认为这是假设键值的组合在输入中是唯一的。(即,它进行一对一匹配,而不是多对多匹配。)如果输入中可能存在重复项,我认为您需要进行内部联接,而不是相交?
MOOSE2=table(['2010/03/30 00:30:00'; '2010/03/22 18:00:00' ; '2010/04/21 18:30:00';  '2010/02/20 02:20:00'; '2010/03/10 02:30:00'],[5 ;8 ;4; 9 ;7],[10; 11 ;12 ;13 ;14]);
Lion2=table(['2010/03/30 00:30:00';  '2010/04/21 18:30:00';  '2010/03/20 22:00:00';  '2010/03/10 02:00:00'],[5;4;6;7],[17;12;11;14]);

[~,moose_index,lion_index] = intersect(MOOSE2(:,1:2),Lion2(:,1:2),'rows');
dlion = Lion2.Var3(lion_index)
dmoose = MOOSE2.Var3(moose_index)