使用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做类似的运算。
先占楼。啥时候把循环到这步的数据传上来。
页:
[1]