我感兴趣的是,是否有一种简单的方法可以显示大量矩阵(不能)具有1个正数和1个负数的列。因此,我想采用以下矩阵并返回false:
[ 0, p1_2, 0, p1_4, 0, p1_4, 0, p1_4, 0]
[ p2_1, 0, 0, 0, -p2_1, -p2_1, 0, 0, -p2_1]
[ p3_1, p3_2, p3_3, 0, 0, 0, p3_2, p3_3, p3_3]
[ 0, 0, p4_3, p4_4, p4_4, 0, p4_4, 0, 0]
其中所有条目都是限制为实数的符号变量。 从第6(6)栏可以看出,我们有p1_4和p2_1是相同的符号。从(9)我们得到p2_1和p3_3相同的符号。但是从(8)我们得到p1_4和p3_3是相反的符号,所以我们想要返回一个失败并从中考虑抛出这个矩阵。
有关于做什么的想法?谢谢! (顺便说一句,我在matlab工作)
答案 0 :(得分:0)
这回答了问题的初始版本,没有提到变量是符号的:
可以实现您的目标
any(any(sign(A)==-1, 1) & any(sign(A)==1, 1), 2)
其中A
是您的矩阵。
工作原理:any(sign(A)==-1, 1)
是一个行向量,其中包含1
列,其中包含一些负数。 any(sign(A)==1, 1)
类似但是为正数。 &
检查每列是否满足两个条件。最外面的any
检查某些列是否发生了这种情况。
如果您将多个矩阵存储在3D数组中B(:,:,1)
,B(:,:,2)
,...,则可以使用几乎相同的代码:
squeeze(any(any(sign(B)==-1, 1) & any(sign(B)==1, 1), 2))
这将为您提供长度为size(B,3)
的向量,其中每个条目都包含其中一个矩阵的结果。