Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 两个矩阵列相等性的自动测试_Arrays_Matlab_Matrix - Fatal编程技术网

Arrays 两个矩阵列相等性的自动测试

Arrays 两个矩阵列相等性的自动测试,arrays,matlab,matrix,Arrays,Matlab,Matrix,我有两个矩阵: X = 1 2 3 4 5 6 7 8 9 `Y` = 1 10 11 4 12 13 7 14 15 rowsX = ismember(X.', Y.', 'rows') rowsX = 1 0 0 我知道如果我想在X或Y中查找特定元素的索引,我可以使用函数find。例如: index_3=find(X==

我有两个矩阵:

X =

     1     2     3
     4     5     6
     7     8     9

`Y` =

     1    10    11
     4    12    13
     7    14    15
rowsX = ismember(X.', Y.', 'rows')
rowsX =

   1
   0
   0
我知道如果我想在
X
Y
中查找特定元素的索引,我可以使用函数
find
。例如:
index_3=find(X==3)

我想要的是,如果
X
中的列也出现在
Y
中,则以非常自动的方式查找或搜索。换句话说,我需要一个函数,它可以告诉我
X
中的一列是否等于
Y
中的一列。事实上,要尝试这一点,可以使用函数
ismember
,它确实有一个可选的标志来比较行:

rowsX = ismember(X, Y, 'rows');
因此,获取列的一种简单方法就是对两个矩阵进行转置:

X =

     1     2     3
     4     5     6
     7     8     9

`Y` =

     1    10    11
     4    12    13
     7    14    15
rowsX = ismember(X.', Y.', 'rows')
rowsX =

   1
   0
   0
但我怎么能以其他方式做到这一点呢

任何帮助都将不胜感激

您可以使用和:

这给

rowsX =
     1     0     0
它的工作原理


permute
“沿垂直轴旋转
Y
90度”,因此
Y
列与
X
列保持对齐,但
Y
行移动到第三维。使用
bsxfun
测试是否相等,并应用
all(…,1)
给出一个矩阵,告诉
X
的哪些列等于
Y
的哪些列。然后
any(…,3)
生成所需的结果:
true
如果
X
的列等于
Y
的任何列

为什么说
ismember(X',Y',rows')
不是自动的?o、 OSorry它是自动的,但我需要另一个函数,如果X中的一列也存在于Y中,则该函数可以直接为我提供“1”;如果不存在,则该函数为“0”。如果您的意思是要检查X中的一列是否存在于Y中,则可以执行
if(any(ismember(X.),Y.,“rows'))…
any(ismember(X.),Y.,'rows')
将返回您的“0”或“1”。
find(…)
在这种情况下起作用,因为在您的示例中,在Y中只找到X中的一列:
[1 0]=ismember(…)
。因此,当您执行
find([1 0 0])==1
时,您将得到一个输出。但是如果在X中有超过1列存在于Y中,那么您将使用
find(..)=1再次返回
向量。示例:
find([1 0 1])==1
将为您提供
[1 3]
。相关:。我仍然不确定您想要什么,这与
ismember
解决方案不同。您是否可能只是想要
colsX=rowsX.
?也许我把变量命名得很糟糕。:)