【问题标题】:How to compare the values of three matrices are equal?如何比较三个矩阵的值是否相等?
【发布时间】:2023-03-31 19:15:01
【问题描述】:

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

我有三个矩阵:RST(大小:95956 x 1)和 I需要比较它们的所有元素并查看哪些元素相等。然后我们将相同的值乘以第四个矩阵。

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

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

这是正确的吗?我将如何仅将等于第四个矩阵的值相乘?

【问题讨论】:

  • 三个矩阵中相等的值是否都在同一位置?
  • 嗨,布拉索菲洛。并非每个矩阵都有 95956 个值分布在一列中。我需要的是检查相等的值​​​。例如:在矩阵 R 中的值是 0.2589 我需要检查矩阵 S 和 T 是否是值矩阵 0.2589。请你帮我处理这件事。非常感谢你是巴西人吗?

标签: matlab matrix comparison


【解决方案1】:

使用一些简单的示例矩阵和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 的参数可以是不同的长度,这可能会有所帮助。

【讨论】:

  • 嗨 Horchler 非常感谢您帮助我,因为我说我是使用 MatLab 的新手。每当我使用命令 R_common = R(R==S&R==T);并且 I = find(R==S&R==T);,我得到以下响应:空矩阵:0×1。请你继续在这件事上帮助我。非常感谢
  • @Jadielcsilva 这意味着在所有三个矩阵的相同位置中没有共同值。您是否需要相同位置的相等值,或一般相等的值(例如,S(1)=R(12) 好吗?)?
  • @Jadielcsilva:您可以使用isempty 函数检测没有公共值的情况。
  • 您好 首先感谢大家的帮助。我需要知道母亲之间共有的值是什么,无论它们在数组中的位置如何。我相信你向我展示的功能 Horchler 提供了这些值。我会做一些测试。再次感谢你们的帮助。
  • 但是“相交”显示了哪些行值相等,现在我需要将这些行中包含的值与第四个矩阵(D)相乘。如何做到这一点,因为我现在只有具有相等值的行​​。如果我将 RST_intersection 与矩阵 (D) 相乘是不正确的,因为它只是位置 RST_intersection 行 q 包含相同的值而不是值。伙计们,对不起,我很不舒服,但我正在学习在 MATLAB 中使用矩阵,你们帮了我很多。请再次帮助我
猜你喜欢
  • 2016-10-20
  • 1970-01-01
  • 2014-09-20
  • 2013-12-30
  • 1970-01-01
  • 2021-05-23
  • 1970-01-01
  • 1970-01-01
  • 2013-08-18
相关资源
最近更新 更多