找回密码
 注册
Simdroid-非首页
查看: 45|回复: 1

使用setdiff时出现故障

[复制链接]
发表于 2018-1-1 18:46:49 | 显示全部楼层 |阅读模式 来自 英国
    %代码段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做类似的运算。


 楼主| 发表于 2018-1-1 20:26:36 | 显示全部楼层 来自 英国
Simdroid开发平台
先占楼。啥时候把循环到这步的数据传上来。
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-26 13:06 , Processed in 0.030184 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表