我是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
这是正确的,我将如何仅乘以那些等于第四个矩阵的值?
答案 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
的参数可以有不同的长度,这可能会有所帮助。