【问题标题】:MATLAB search row index of matrix with values of another matrixMATLAB用另一个矩阵的值搜索矩阵的行索引
【发布时间】:2013-01-20 08:52:39
【问题描述】:

在 MATLAB 中,我有一个非常大的矩阵(矩阵 A)。现在我想在 second 列中找到包含某些值的行的行索引。这些值 - 我在矩阵 A 中寻找 - 存储在另一个矩阵(矩阵 B)中,由一行(800 个数字)组成。

此外,我还想为同一个矩阵 A 重做这个计算,但是对于十个不同的矩阵,具有不同的大小(其中包含我在矩阵 A 的 不同 列中寻找的值) .

由于矩阵的大小,我认为我需要一个循环来提取矩阵 A 中包含矩阵 B 的 te 值的行。我该怎么做?

问候,

V

感谢您的快速回复!确实,如果没有示例,这个问题可能有点复杂,并且确实重复的条目会导致一些问题。因此特此举个例子

例如我有一个-simplified-矩阵A:

1 2 3 4

9 9 9 9

4 3 2 1

还有一个简化矩阵(行)B:[9 3]

还有一个简化矩阵(行)C:[9 2]

然后我想得到矩阵 D 和矩阵 E。这些矩阵应该在第一列中包含原始矩阵 D(或 E)中的数字,在第二列中包含该值在矩阵 A 中的相应行位置.

所以,矩阵 D =

9 2

3 3

矩阵 E =

9 2

2 3

如本例所示,矩阵 B 和矩阵 C 可以包含存在于矩阵 A 的多列(如九列)中的数据。但是,矩阵 B 应该在矩阵 A 的第 2 列中“搜索”。同样,矩阵 C 应该在矩阵 A 的第 3 列中“搜索”,从而得到示例中给出的矩阵 D 和 E。

【问题讨论】:

  • 您的描述非常复杂。您能否提供简短代码 sn-ps 以帮助我们了解您尝试过的内容以及您想要实现的目标?
  • 好的,我更新了说明。希望现在很清楚。

标签: matlab search indexing row


【解决方案1】:

正如 Shai 在他的评论中提到的,您的问题非常模糊,并且可能会出现很多特殊情况(重复条目、A 和 B 的相对大小等)。但总的来说,我尝试了一小段代码,似乎可以满足您的需求。当然有更快的方法可以做到这一点,当然更多关于您的问题的信息可以帮助优化这一点。

colA=2;
% Example
nmax=10;
nA=5;
A=randi(nmax,[nA nA]);
nB=3;
B=randi(nmax,[1 nB]);
% Find rows
rows=cell(size(B));
for i=1:numel(B)
    rows(i)={find(A(:,colA)==B(i))};
end

输入/输出是:

A =
     3     7     8     5     4
     9     7     3     7     5
     8     2     9     9     8
     9     5     9     7     9
     3     3     4     6     8

B =
     1     7     5

rows =
     [0x1 double]    [1;2]    [4]

【讨论】:

  • 这看起来很有希望!通过添加: D= cell2mat(rows) Matrix=[B;D]' 我得到了我想要的解决方案。非常感谢!
【解决方案2】:

假设您有两个向量,largeDataIndex(矩阵的第二列)和 interestingIndex(您的 b),并且您需要以下内容:

For each value of interestingIndex , find the position in largeDataIndex 

那么一个简单的方法是这样的:

result = zeros(size(interestingIndex))
for i = 1:length(result)
    result(i) = find(interestingIndex(i) == largeDataIndex)
end

请注意,这假设始终只有一个匹配项,否则您应该将结果定义为元胞数组而不是向量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-16
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    相关资源
    最近更新 更多