【发布时间】:2017-11-21 07:03:17
【问题描述】:
我尝试替换在两个值之间可接受的公差范围/距离(非零)内的两个值之间的每行值。例如:
A=[0 0 0 0 1 *0 *0 *0 *0 *0 -1 *0 *0 *0 *0 *0 *0 *0 *0 *0 *0 *0 *0 *0 *0 *0 -1 *0 *0 *0 1 0 0 0;
0 0 1 *0 *0 *0 *0 *0 *0 *0 -1 *0 *0 *0 *0 *0 *0 *0 *0 *0 *0 *0 *0 *0 *0 *0 -1 *0 *0 *0 1 0 0 0]
* 表示被视为外壳的可能值。容差为 6(例如),里面的值将被替换为第一个边界值:
A_replaced=[0 0 0 0 1 *1 *1 *1 *1 *1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 *-1 *-1 *-1 -1 0 0 0;
0 0 1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 *-1 *-1 *-1 -1 0 0 0]
如您所见,由于两个边界之间的距离不超过 6(小于容差),因此可以将所有可以视为封闭的内容都替换为第一个边界值(包括末端闭合值)。是否有矢量化方法可以针对大尺寸矩阵执行此操作?提前致谢!
【问题讨论】:
-
对此的预期输出是什么:
[1 0 0 0 0 -1 0 0 0 -1] -
抱歉忘记提了。输出将是
[1 1 1 1 1 1 0 0 0 -1]。第二部分被忽略,如果矩阵扩展为[1 0 0 0 0 -1 0 0 0 -1 0 0 0 0 1],则最后一个-1将被视为另一个外壳的初始边界 -
非零值只能是 1 或 -1 还是也可以是其他值?例如。
[0 0 3 0 -1 0 -1.7 0]可以作为输入吗? -
可以是任何非零值,不一定是1或-1