pacoyang 发表于 2018-1-1 18:46:49

使用setdiff时出现故障

    %代码段1
    %奇怪,下面setdiff语句出错
    validCurrentElemNo=setdiff(ALLelement(loc,:).',validCurrentElemNo.','rows').';
    validStackRientFaceNo=setdiff(ALLfaceid(loc,:).',oppositeFaceid.','rows').';
    %代码段2
    a=ALLelement(loc,:);b=validCurrentElemNo;
    validCurrentElemNo=a(a~=b*ones(1,2));
    a=ALLfaceid(loc,:);b=oppositeFaceid;
    validStackRientFaceNo=a(a~=b*ones(1,2));


上述语句,是在一个循环体内。循环到一定程度,代码段1就是出错,表现是:获得的新的参数validCurrentElemNo总数有两列,而不是一列。没招了,改成代码段2,it does work right!

为什么,我觉得代码段1和代码段2没有区别。


这是程序中的源代码的一小段,我解释一下:
ALLelement是一个有两个列的矩阵(行数比较大写,45万多,但也不是巨大),validCurrentElemNo是一个列向量。loc是一个自然数的列向量,长度与validCurrentElemNo相同。
ALLelement(loc,:)的每一行有两个元素,其中一个就在validCurrentElemNo对应行的那个元素。现在要找出另一个元素。把所有元素找出来,组成新的validCurrentElemNo。
另外ALLfaceid和oppositeFaceid做类似的运算。


pacoyang 发表于 2018-1-1 20:26:36

先占楼。啥时候把循环到这步的数据传上来。
页: [1]
查看完整版本: 使用setdiff时出现故障