【问题标题】:MATLAB: scan the row of a matrix and use values to search another matrixMATLAB:扫描矩阵的行并使用值搜索另一个矩阵
【发布时间】:2014-12-05 10:15:16
【问题描述】:

我有矩阵 X 和 A X = [x1, y1, 1, 1; x2, y2, 1, 3; x3, y, 2, 4] A = [1, 1, 0; 1、3、1; 1、4、2]

我想: 1.扫描X中每一行的最后两列(仅供参考,这两个数字组合是唯一的) 2. 在 A 的前两列中找到这些值 3.获取A的那一行最后一列的值。

例如,对于X的第一行,我得到1和1,所以我为A中的前两列(似乎是第一行)找到1和1,所以我想要得到的数字是0.

如果我正在使用的只是一个数字,我想我可以使用循环和“查找”函数来做到这一点,但我是 matlab 新手,并且在组合两个数字时遇到了麻烦。非常感谢您的帮助!

【问题讨论】:

    标签: matlab


    【解决方案1】:

    ismember 函数可能是您想要的,还有用于从数组中提取列的 () 和 : 运算符。

    % Map rows in X to rows in A
    [tf,loc] = ismember(X(:,[3 4]), A(:,[1 2]), 'rows');
    % Grab the corresponding value from A
    rslt = A(loc, 3);
    

    现在你有一个逻辑向量tf,它指示X 中的每一行是否在A 中找到,loc,它将对应的索引保存到A 的行中匹配的行。然后,您使用这些索引来索引 A 以提取“值”或因变量列。这些是矢量化操作,因此它会比使用循环和find() 更快。

    通读ismember、unique、paren 的文档以及它们引用的函数,以了解更多有关 Matlab 函数的背景知识,以便像这样进行记录搜索。

    【讨论】:

      猜你喜欢
      • 2013-01-20
      • 2015-06-16
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多