如何比较三个矩阵的值是否相等?

时间:2013-07-07 17:30:41

标签: matlab matrix comparison

我是Matlab的新手。我需要矩阵比较的帮助。

我有三个矩阵: R S T (尺寸: 95956 x 1 )和我需要比较它们的所有元素,看看哪些元素是相等的。然后我们将相同的值乘以第四个矩阵。

在Matlab文件中,我读取坐标并将它们分成三个矩阵。从而获得保存在“data.mat”中的矩阵R,S和T.然后我读了另一个文件“data.mat”并使用了For循环:

for t=1:1:length(CoordinateIndex)
    index = R == S;
    ts=ts+1;
end

这是正确的,我将如何仅乘以那些等于第四个矩阵的值?

1 个答案:

答案 0 :(得分:0)

使用一些简单的示例矩阵和logical indexing,我们可以通过以下方式找到三者中常见的值:

R = [1:4 1:4 1:4 1:4];
S = [1:2 1:2 1:4 1:6 1:2];
T = [1:6 1:2 1:8];
R_common = R(R==S&R==T);

这会产生:

R_common =

     1     2     1     2     3     4

如果您想要所有三个矩阵中常见的索引,请使用:

I = find(R==S&R==T);

给出了

I = 
     1     2     9    10    11    12

编辑:正如@Adiel建议的那样,您可能对矩阵中常见的值感兴趣,无论它们在矩阵中的位置如何。这可以通过intersect函数(另请参阅this):

来完成
RST_intersection = intersect(intersect(R,S),T)

对于我的示例矩阵,这给出了

RST_intersection =

     1     2     3     4

请注意,intersect的参数可以有不同的长度,这可能会有所帮助。